Pre-publish QA
Catch a Broken Card Before It Ships
Run the URL through the scorer during code review — flags off-spec dimensions, oversized files and low-contrast text before merge.
Upload a card or paste any page URL and get an honest hundred-point grade — dimensions, text weight, contrast and how well the palette matches the site behind the link.
Drag a PNG, JPEG or WebP here — up to 5 MB.
Every OG image is graded on the same seven dimensions and 100-point scale. The rubric below is what the scorer runs on your image — no black box, no vendor bias. Use it as a checklist even without the tool.
| Criterion | Weight | Passes when… | Fails when… |
|---|---|---|---|
| Dimensions | 20 | Exact 1200×630 pixels — the canonical Open Graph size that every platform (Facebook, LinkedIn, X, Slack, Discord) crops and scales the least. | Any other ratio. Squares, 4:3 screenshots and 1200×628 all lose margin to letterboxing or platform-side re-cropping. |
| Safe area | 15 | A 32-pixel breathing gutter around the frame. Headlines, logos and price stamps stay inside — nothing is cut when previews render at 60% width. | Text or subject touching the edge. Twitter and iOS Messages crop up to 24px on each side; content that lives there disappears. |
| Text density | 20 | One headline plus at most one short supporting line. Text covers under 15% of the frame — the eye reads it in one glance. | Slide-deck syndrome: multi-line paragraphs, bullet lists, feature grids. Above 30% coverage the card stops being scannable in a feed. |
| Color restraint | 15 | Three or four active hues at most — usually a background, a text color and a single accent. Feels intentional, not stock-illustration busy. | Five or more competing hues, rainbow gradients or emoji storms. Thumbnails compress and the card turns into noise. |
| Contrast | 10 | Peak text-to-background contrast ≥ 4.5 : 1 (WCAG AA). Headline stays legible when the card is downscaled to a 160px thumbnail. | Low-contrast pairs — grey on grey, pastel on pastel. The card looks fine on a Retina laptop and vanishes on a phone lock screen. |
| Site tone match | 10 | Card palette overlaps the site's own theme color (ΔE ≤ 20) — the share feels like it belongs to the page it links to. | Generic stock template that ignores the source page. The click-through feels like a bait-and-switch. Score with a page URL to run this check automatically. |
| File & format | 10 | Between 30 KB and 400 KB, served as PNG, JPEG or WebP. Fast to fetch for crawlers, clean edges on Retina. | Over-compressed (< 30 KB, mushy text) or bloated (> 1 MB — X and Slack throttle). AVIF, GIF or SVG that some crawlers ignore. |
Share as-is. No blocker.
Fix one or two nits before ship.
Rework text or color first.
Regenerate from scratch.
No sign-in, no upload storage. The scorer runs in your browser except for the one server call that fetches the og:image behind a URL.
Preview tools show the image. The scorer tells you whether it holds up in a real feed.
Seven measurable checks with a fixed 100-point weighting — no reviewer taste, no house style bias.
Contrast and safe-area checks flag the exact reason a card looks fine on your Retina laptop and vanishes on a phone lock screen.
When you paste a URL the scorer reads the page's theme color and grades the image against your brand — not against a fixed style.
Uploads stay in the browser tab. URL scoring hits our server only to fetch the public og:image behind that page.
Debugger tools clear caches. Manual review checks the vibe. The OG Scorer measures the seven things that actually decide whether the card gets clicked.
| Oginify OG Scorer 7 checks, 100 points | Facebook Sharing Debugger Cache flush + meta echo | Manual review Eyeball it in Slack | |
|---|---|---|---|
| Dimensions check | Exact-pixel scoring | Shows detected size | Depends on the reviewer |
| Text density (PPT feel) | Heuristic coverage score | Not tested | Subjective |
| Site-tone / brand match | Compares to page theme color | Not tested | Subjective |
| Contrast for small thumbnails | WCAG ratio scored | Not tested | Rarely spotted before ship |
| Cache flush after fix | Not this tool's job | This is what it does best | N/A |
| Cost | Free · no login | Free · Meta login | Reviewer's time |
| Best for | Grading the card itself | Refreshing cached previews | Nothing you can measure |
Point it at a URL or upload the PNG — get a 100-point breakdown across dimensions, safe area, text density, contrast and file weight.
Pre-publish QA
Run the URL through the scorer during code review — flags off-spec dimensions, oversized files and low-contrast text before merge.
Batch audit
Feed URLs page by page, export the 100-point grade per route, sort by the lowest score to know which cards to redo first.
Regression check
Score the previous PNG and the new one side by side to prove the refresh actually raised text-density and contrast.
Client audit
Agencies auditing client OG hygiene drop the score into the deck instead of arguing about taste.
What the scorer checks, how uploads are handled, and how to read the grade.
90+ (Ship it) means the card is safe to publish. 75–89 (Solid) means one or two fixes before ship. Under 60 (Rebuild) means the base layout is fighting you — regenerate from scratch rather than patching.
No. Uploads are decoded and scored inside your browser tab and never leave the device. The only server call is when you paste a page URL — we fetch that page's public og:image, score it, and discard the bytes.
1200×630 pixels. Facebook, LinkedIn, X, Slack and Discord all crop and rescale the least at this size. 1200×628, squares and 4:3 screenshots lose points because platforms letterbox or re-crop them.
When you paste a page URL, the scorer reads the page's <meta name="theme-color"> and compares it to the dominant colors of the og:image using ΔE distance. A close match (ΔE ≤ 20) is 10/10; a loose match is 6/10; no overlap is 2/10. Upload-only mode falls back to internal palette harmony.
The scorer treats any 10×10 grid cell with high local contrast and many horizontal edges as text-like — that includes screenshots of UI, dense charts and code blocks. A card that reads as a slide, not a headline, will fail this check even without literal prose.
The scoring rubric is a public checklist — the same seven dimensions apply whether you run the web tool or build your own linter. A programmatic API isn't shipped yet; email hello@oginify.com if you need one for your CI.
A failing card gets a fresh 1200×630 in one paragraph — same rubric, cleaner output.