0/60
0/200

Format: language_TERRITORY — omit if your content is in English

Drop one image here or click to select

PNG, JPG, WebP, SVG — screenshots, logos, or icons

Generated HTML
<meta property="og:type" content="website">
<meta property="og:image" content="INSERT_IMAGE_URL_HERE">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:type" content="image/jpeg">

How to use this OG image generator

  1. Click or drag any JPG, PNG, WebP, AVIF, or GIF image onto the editor. The image loads instantly in your browser — nothing is uploaded to any server.
  2. Choose an aspect ratio: 1.91:1 (1200×630 px) for standard Facebook and Open Graph, or 1:1 (1080×1080 px) for Instagram-style square previews.
  3. Drag the image to reposition it inside the crop frame. Use the zoom slider or mouse wheel to zoom in and out. On mobile, use pinch-to-zoom.
  4. Use the quality slider to balance file size and sharpness. 80–90 % typically gives a crisp JPEG under 150 KB — the file size updates in real time.
  5. Switch to Preview to see a live social card mock-up of how your link will appear on Slack, Discord, Facebook, and other platforms.
  6. Click Download to save the cropped JPEG. Fill in the meta tag fields, copy the generated HTML, and paste it into your page's <head> section.

The tool runs entirely in your browser — no file is ever uploaded to a server. Cropping, quality adjustment, and JPEG export all happen locally via the Canvas API. This means your images stay private and the tool works even offline after the page has loaded.

OG image size requirements by platform

Different platforms handle Open Graph images differently, but the 1200×630 px JPEG at 1.91:1 ratio covers virtually every major platform. Use the 1:1 square format only when specifically targeting Instagram link stickers or Twitter summary cards.

PlatformRecommended sizeAspect ratioMax file size
Facebook / Open Graph1200×630 px1.91:18 MB
Twitter / X (large card)1200×628 px~1.91:15 MB
Twitter / X (square)1080×1080 px1:15 MB
LinkedIn1200×628 px1.91:15 MB
Slack & Discord1200×630 px1.91:1
WhatsApp1200×630 px1.91:1
iMessage / Apple1200×630 px1.91:1
Google Discover1200×630 px≥ 1.2:1

All platforms fall back to og:image if a platform-specific tag is not set. For most sites, one 1200×630 px JPEG covers all platforms.

Minimum size and the "small image" fallback

Facebook requires a minimum of 600×315 px to show a large preview card. Below that, it falls back to a small thumbnail (≈ 158×158 px) in the corner of the link preview — a much weaker visual impression. Always use at least 1200×630 px to guarantee the large card layout.

Why JPG and not WebP for OG images?

While WebP produces 25–34 % smaller files than JPEG for the same visual quality, it is not universally supported by link preview scrapers. WhatsApp, iMessage, older Slack clients, and many email preview renderers cannot decode WebP. A broken or missing image in a link preview is far worse than a slightly larger JPEG. Stick with JPEG for maximum compatibility — aim for 80–90 % quality to keep the file under 150 KB.

How to add og:image meta tags to your site

After downloading your cropped image, upload it to your web server or CDN and replace INSERT_IMAGE_URL_HERE in the generated code with the public URL. The URL must be absolute (starting with https://) — relative URLs are not supported by any link scraper.

Plain HTML

Paste directly inside the <head> of your HTML file:

HTML
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://example.com/page">
<meta property="og:title" content="Page Title — Brand Name">
<meta property="og:description" content="Page description — 120–160 characters recommended.">
<meta property="og:image" content="https://example.com/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:type" content="image/jpeg">
<meta property="og:site_name" content="Brand Name">

<!-- Twitter / X -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Page Title — Brand Name">
<meta name="twitter:description" content="Page description — 120–160 characters recommended.">
<meta name="twitter:image" content="https://example.com/og-image.jpg">

React + Vite (react-helmet-async)

Install react-helmet-async, wrap your app in HelmetProvider, then add <Helmet> to each page component:

JSX
import { Helmet } from 'react-helmet-async'

export default function MyPage() {
  return (
    <>
      <Helmet>
        <meta property="og:type" content="website" />
        <meta property="og:url" content="https://example.com/page" />
        <meta property="og:title" content="Page Title — Brand Name" />
        <meta property="og:description" content="Page description." />
        <meta property="og:image" content="https://example.com/og-image.jpg" />
        <meta property="og:image:width" content="1200" />
        <meta property="og:image:height" content="630" />
        <meta property="og:image:type" content="image/jpeg" />
        <meta name="twitter:card" content="summary_large_image" />
        <meta name="twitter:image" content="https://example.com/og-image.jpg" />
      </Helmet>
      {/* page content */}
    </>
  )
}

Next.js 13+ (App Router)

Export a metadata object from your page.js. Next.js renders all OG tags server-side — no extra library needed:

JS
// app/my-page/page.js  (Next.js 13+ App Router)
export const metadata = {
  title: 'Page Title — Brand Name',
  description: 'Page description.',
  openGraph: {
    type: 'website',
    url: 'https://example.com/page',
    title: 'Page Title — Brand Name',
    description: 'Page description.',
    siteName: 'Brand Name',
    images: [
      {
        url: 'https://example.com/og-image.jpg',
        width: 1200,
        height: 630,
        type: 'image/jpeg',
      },
    ],
  },
  twitter: {
    card: 'summary_large_image',
    title: 'Page Title — Brand Name',
    description: 'Page description.',
    images: ['https://example.com/og-image.jpg'],
  },
}

Vue 3 + Nuxt 3

Use the built-in useHead() composable inside <script setup>:

JS
// pages/my-page.vue  (inside <script setup>)
useHead({
  meta: [
    { property: 'og:type',         content: 'website' },
    { property: 'og:url',          content: 'https://example.com/page' },
    { property: 'og:title',        content: 'Page Title — Brand Name' },
    { property: 'og:description',  content: 'Page description.' },
    { property: 'og:image',        content: 'https://example.com/og-image.jpg' },
    { property: 'og:image:width',  content: '1200' },
    { property: 'og:image:height', content: '630' },
    { property: 'og:image:type',   content: 'image/jpeg' },
    { name: 'twitter:card',        content: 'summary_large_image' },
    { name: 'twitter:image',       content: 'https://example.com/og-image.jpg' },
  ],
})

WordPress

Install Yoast SEO or Rank Math — both add a meta box on every post and page where you set the OG title, description, and image. After uploading your 1200×630 JPG to the Media Library, select it as the social preview image. Both plugins output og:image:width and og:image:height automatically.

Frequently Asked Questions

What is an OG image and why does every page need one?
An Open Graph image (og:image) is the thumbnail shown when you share a link on Facebook, LinkedIn, Twitter/X, Slack, Discord, iMessage, or WhatsApp. It is defined by the og:image meta tag in your page's <head>. Without it, platforms either show no image or grab a random one from the page — often poorly cropped. A well-designed OG image significantly increases click-through rates on shared links. Studies show that links with large, relevant preview images receive 3× more clicks than links without images.
What are the correct OG image dimensions in 2025?
The standard OG image size is 1200×630 px at a 1.91:1 aspect ratio — this is what Facebook, LinkedIn, Twitter/X large card, Slack, and Discord all use. For square previews (Instagram link stickers, some Twitter summary cards), use 1080×1080 px. Never go below 600×315 px: Facebook will fall back to a small thumbnail instead of the large preview card. Always add og:image:width and og:image:height so scrapers do not need to download the full image to read its dimensions.
Which file format should I use for OG images — JPG, PNG, or WebP?
JPG is the recommended format for OG images. It has universal support across all link preview scrapers, email clients, and messaging apps. PNG works well for logos and images with transparency, but produces larger files for photographs. Avoid WebP for OG images — WhatsApp, older Slack clients, iMessage, and many email clients cannot render WebP previews. This tool exports JPEG directly, which is the safest and most widely compatible choice.
What is the ideal file size for an OG image?
Keep OG images under 300 KB — ideally 80–150 KB. Facebook's hard limit is 8 MB, but large images slow down scraping and can fail on slow mobile networks. Twitter/X has a 5 MB limit. Use 80–90 % JPEG quality to hit a good size/quality trade-off. The quality slider in this tool shows the output file size in real time, so you can find the right balance without guessing.
Why does my OG image not update after I change it?
Social platforms cache OG images aggressively — sometimes for days. After updating your og:image, you need to force a re-scrape: on Facebook use the Sharing Debugger at developers.facebook.com/tools/debug/, on LinkedIn use the Post Inspector at linkedin.com/post-inspector/. Twitter/X refreshes automatically within 7 days, or you can trigger an immediate rescrape by pasting the URL in a tweet. If the image still does not update, add a query string to the URL (e.g., ?v=2) to force platforms to treat it as a new URL.
Do OG images directly affect Google search rankings?
Not directly — OG tags are not a Google ranking factor. However, a compelling OG image increases click-through rates on social shares, which drives more organic traffic to your page. Google Discover also displays rich image cards for pages with a high-quality image of at least 1200 px wide. Higher engagement (time on site, return visits) from social traffic can indirectly improve your search rankings over time.
What is the difference between og:image and twitter:image?
og:image is the standard Open Graph tag used by Facebook, LinkedIn, Slack, Discord, and most other platforms. twitter:image is Twitter's/X's own tag — if not set, Twitter falls back to og:image automatically. In practice, always set both explicitly: use og:image for broad platform support, and twitter:image to be explicit with Twitter. The meta tag generator in this tool outputs both when you enable the Twitter / X section.
Why do I need og:image:width and og:image:height tags?
Without width and height hints, Facebook's scraper must download and fully decode the image to determine its dimensions before deciding whether to show a large preview card. Adding og:image:width and og:image:height lets the scraper skip that step — resulting in faster preview rendering and avoiding the "image too small" fallback that shows a tiny thumbnail instead of a large card.
How do I add og:image meta tags in React, Next.js, or Nuxt?
In React with Vite, use react-helmet-async — install the package, wrap your app in HelmetProvider, then add <Helmet> with the meta tags in each page component. In Next.js 13+ App Router, export a metadata object or generateMetadata() function from your page.js — Next.js renders all OG tags server-side automatically. In Nuxt 3, use the built-in useHead() composable. Code examples for all frameworks are shown below.
Does this tool upload my image to any server?
No. All processing — image loading, cropping, quality adjustment, and JPEG export — happens entirely inside your browser using the Canvas API. Your image never leaves your device. There is no backend, no server upload, and no third-party API call. You can verify this by opening browser DevTools → Network tab while using the tool; no file transfer requests will appear. This means the tool also works offline after the page has loaded once.