Tools

Website SEO AuditBroken Link CheckerSchema Markup ValidatorInternal Link CheckerKeyword Cannibalization CheckerKeyword ClusteringWord CounterReadability CheckerKeyword DensityWriting Pattern IndicatorLong-Tail Keyword IdeasSERP Snippet PreviewMeta Tag GeneratorURL Slug GeneratorRobots.txt GeneratorMeta Title GeneratorMeta Description GeneratorOpen Graph GeneratorTwitter Card GeneratorHTML Meta TagsMeta Tags for WordPressMeta Tags for ShopifyMeta Tags for BloggerMeta Tags for WebflowMeta Tags for ReactMeta Tags for Next.jsCore Web Vitals CheckerImage CompressorHTML MinifierCSS MinifierJavaScript MinifierVideo & Image SpecsQR Code GeneratorMerge PDFSplit PDFRotate PDFDelete PDF PagesRearrange PDF PagesExtract PDF PagesCrop PDFJPG to PDFPNG to PDFPDF to JPGPDF to PNGResize ImageCrop ImageImage ConverterWebP to JPGHEIC to JPGProfile Photo MakerImage to Text (OCR)MOV to MP4MKV to MP4WebM to MP4AVI to MP4MP4 to MP3Extract Audio from VideoTrim VideoMute VideoVideo to GIFResize VideoCompress VideoM4A to MP3WAV to MP3OGG to MP3AAC to MP3Split CSVSplit ExcelCSV to ExcelExcel to CSVExcel to XMLXML to ExcelXML to CSVXML to JSONJSON to CSV
Meta Tags & SocialFree, no sign-upRuns in your browser

Meta Tags for React

Get copy-paste code for setting the title, description and social tags in a React component, with native React 19 metadata or react-helmet-async for older versions.

Use a full https:// address. Best size: 1200 × 630 pixels.


React 19: no library needed

Since React 19, you can render <title>, <meta> and <link> tags anywhere in a component, and React automatically moves them into the document <head>. That lets each route or page component own its metadata. Two rules: <title> must contain a single string (build it with a template string first), and render each tag only once per page.

React 18 and older: react-helmet-async

Before React 19, the usual tool is react-helmet-async (use it instead of the older react-helmet, which isn’t safe for server rendering). Wrap your app once in <HelmetProvider>, then put a <Helmet> block in each page. The deepest Helmet wins, so a page’s title overrides the default set in your layout.

The big catch: single-page apps

If your React app is a client-side SPA (Create React App, a plain Vite app), the HTML your server sends is an almost empty <div id="root">. Tags are added only after JavaScript runs:

  • Google does run JavaScript, so it usually sees your tags, but rendering can be delayed and errors can hide them.
  • Facebook, LinkedIn, X, WhatsApp, Slack and Discord do not run JavaScript. They only read the original HTML, so every shared link shows the same default card, or none.

The fixes, from simplest to strongest: put good default tags in index.html; pre-render your public pages at build time (for example with a Vite pre-render plugin); or use a framework with server rendering such as Next.js, Remix/React Router or Astro. If your app is behind a login, default tags in index.html are usually enough.

Test what crawlers really see

View the page source (Ctrl+U), not the Elements panel: the source is what social crawlers get. For Google, use URL Inspection in Search Console and look at the rendered HTML.

More meta tag tools

How to use the Meta Tags for React

  1. Enter the page title, description, URL and share image.
  2. Choose React 19 or react-helmet-async in the output tabs.
  3. Paste the code into your page component and check the page source to confirm the tags.

Frequently asked questions

Do I need react-helmet in React 19?

No. React 19 supports <title>, <meta> and <link> tags inside components and moves them into the head automatically.

Why do my React meta tags not show on Facebook or WhatsApp?

Social apps don’t run JavaScript, so they only see the tags in your initial HTML. Use server rendering or pre-rendering, or set good defaults in index.html.

Can Google read meta tags added by JavaScript?

Usually yes, because Google renders pages. Server-rendered tags are still more reliable and are picked up faster.