# Cell Validation with Renderers
URL: https://pro.rv-grid.com/guides/validate-basic/
Source: src/content/docs/guides/validate-basic.mdx
Description: Explore different methods for validating cell data in RevoGrid and ensuring data integrity.
One straightforward way to validate cell data is by combining `validate`, `validationTooltip`, and `validationRenderer`.
This marks invalid cells during rendering without changing edit behavior, which is useful for audits, imported data review, and soft warnings.

```ts
import { validationRenderer } from '@revolist/revogrid-pro';

const columns = [
  {
    prop: 'price',
    name: 'Price',
    validate: (value, row) => value >= row.floor && value <= row.ceiling,
    validationTooltip: (value, row) =>
      `Price ${value} must stay between ${row.floor} and ${row.ceiling}`,
    ...validationRenderer({
      severity: 'error',
      indicatorPlacement: 'corner',
      messagePlacement: 'tooltip',
    }),
  },
];
```

`validationRenderer` returns `cellProperties` and `cellTemplate`, so it can wrap your existing cell renderer while keeping validation styling in one place.
The helper supports:

- `severity`: `error`, `warning`, or `info`.
- `indicatorPlacement`: `corner`, `start`, `end`, or `none`.
- `messagePlacement`: `tooltip`, `inline`, `both`, or `none`.
- `message`: a custom message resolver when `validationTooltip` is not enough.
- `invalidProperties`: extra cell properties for invalid cells.

`messagePlacement` controls where the validation message is exposed:

- `tooltip` adds `title` and tooltip data attributes.
- `inline` renders the message inside the cell without tooltip attributes.
- `both` renders inline text and tooltip attributes.
- `none` keeps the visual indicator but hides the message text.

:::note
This renderer-only approach shows invalid data already present in the grid. To prevent invalid edits from being committed, use `CellValidatePlugin` from the input validation guide.
:::
