Documentation

Everything you need to know about OGProof, OG tags, and social previews.

Getting started

OGProof fetches any public URL server-side and extracts all Open Graph, Twitter Card, and standard meta tags. It renders them in six platform-accurate visual components and validates each tag against each platform's documented requirements.

  1. 1.Paste any public URL into the input field on the home page.
  2. 2.Click Preview. OGProof fetches the URL and parses all meta tags within 5 seconds.
  3. 3.Switch between platform tabs to see how each platform renders your link.
  4. 4.Check the Fixes tab for specific, copy-paste-ready corrections.
  5. 5.Use the Tags tab to see every OG tag extracted from your page.

Platform specifications

Twitter / X

  • Card types: summary, summary_large_image
  • summary_large_image: 1200×628px recommended, 2:1 aspect ratio enforced
  • summary: Square thumbnail, 1:1 crop, 400×400px recommended
  • Title: ~70 characters before truncation
  • Description: ~200 characters (2 lines visible)
  • HTTPS required for images
  • Tag priority: twitter:* → og:* → <title>

LinkedIn

  • Only reads og: tags — ignores all twitter: tags
  • Image: 1200×627px recommended, 1.91:1 aspect ratio
  • Minimum image: 200×200px (smaller images not displayed)
  • Title: ~150 characters
  • Description: ~300 characters
  • Domain shown in UPPERCASE below title
  • Crawler: LinkedInBot/1.0

Facebook

  • Full Open Graph protocol support
  • Image: 1200×630px recommended, 1.91:1 aspect ratio
  • Minimum image: 600×315px (smaller renders inline/small)
  • Title: ~100 characters
  • Description: deprecated in news feed but shows in Messenger
  • Crawler: facebookexternalhit/1.1

Discord

  • Embed color controlled by theme-color meta tag
  • Site name from og:site_name shown at top of embed
  • Image displayed at up to 400px wide
  • Animated GIFs fully supported and autoplay
  • No og:image = text-only embed
  • og:video enables inline video player

Slack

  • Link unfurling — workspace admins can disable per domain
  • Thumbnail appears to the right of text
  • Title: ~80 characters
  • Description: ~200 characters, 3-4 lines
  • Respects twitter:card: summary_large_image for large image
  • Images over 2MB may not display on mobile

iMessage

  • Rendered as rounded-corner card in Messages thread
  • Title: ~60-70 characters before truncation
  • Description: 2 lines maximum, ~120 characters
  • HTTPS required for images
  • Very large HTML pages (>1MB) may get no preview

CI/CD Webhook API

The webhook endpoint validates a URL and returns a structured JSON response. Integrate it into any CI/CD system that can make HTTP requests.

Request

POST https://ogproof.io/api/webhook/validate
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{"url": "https://example.com/page"}

Response

{
  "url": "https://example.com/page",
  "status": "pass|warn|fail",
  "checked_at": "2026-02-18T14:00:00Z",
  "platforms": {
    "twitter": { "status": "pass", "issues": [] },
    "linkedin": { "status": "warn", "issues": ["og:image missing"] },
    "facebook": { "status": "pass", "issues": [] },
    "discord": { "status": "pass", "issues": [] },
    "slack": { "status": "pass", "issues": [] },
    "imessage": { "status": "warn", "issues": ["title too long: 156 chars"] }
  },
  "tags": {
    "og:title": "Your Page Title",
    "og:description": "...",
    "og:image": "https://..."
  }
}

GitHub Actions example

# .github/workflows/og-check.yml
name: Validate OG tags

on: [push, pull_request]

jobs:
  og-check:
    runs-on: ubuntu-latest
    steps:
      - name: Validate OG tags on staging
        run: |
          curl -X POST https://ogproof.io/api/webhook/validate \
            -H "Authorization: Bearer ${{ secrets.OGPROOF_API_KEY }}" \
            -H "Content-Type: application/json" \
            -d '{"url": "${{ vars.STAGING_URL }}/blog/new-post"}' \
            --fail  # Exit non-zero if HTTP 4xx/5xx
Status codes: HTTP 200 = pass or warn. HTTP 422 = fail (critical OG issues found). HTTP 408 = timeout. The --fail curl flag makes the command exit with a non-zero code on 4xx/5xx, failing the workflow step.

OG tag reference

Minimum required tags for good social previews across all platforms:

<!-- Required for all platforms -->
<meta property="og:title" content="Your Page Title" />
<meta property="og:description" content="A 1-2 sentence description." />
<meta property="og:image" content="https://example.com/image.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:url" content="https://example.com/page" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Your Site Name" />

<!-- Twitter-specific (falls back to og: tags) -->
<meta name="twitter:card" content="summary_large_image" />

<!-- Discord accent color -->
<meta name="theme-color" content="#7c3aed" />