When you repost an article to Telegram, instead of an appealing preview you get an empty gray rectangle. The cause is usually missing or incorrectly configured OG tags—specifically images. Pages with proper previews can see up to 30% higher click-through rates. We solve this problem end-to-end: we design templates, automate generation, and configure meta tags for all major platforms. Without quality previews, your content gets lost in feeds and potential clients pass by. Investing in OG image development pays for itself within the first month through improved CTR.
Why standard previews fail?
Without an explicit og:image, social networks and messengers pick the first image they find—often a logo, icon, or a missing element. Common pitfalls: wrong size (not 1200×630px), missing twitter:image for Twitter/X, image too heavy (over 8MB). Unreadable text on thumbnails at small sizes also hurts CTR. Many CMS either don't generate og:image by default or pick the first content image, which may be irrelevant. The Open Graph protocol (Open Graph) solves this by letting you explicitly define the preview. Platforms cache images up to 24 hours, so after changing meta tags you must forcibly refresh cache via their debuggers.
Platform requirements
| Platform | Image size | Format | Max weight | Meta tags |
|---|---|---|---|---|
| Facebook/VK | 1200×630px | JPG/PNG | 8 MB | og:image, og:image:width, og:image:height |
| Twitter/X | 1200×600px (min 300×157) | JPG/PNG | 5 MB | twitter:image, twitter:card:summary_large_image |
| Telegram | uses og:image |
JPG/PNG | 8 MB | og:image |
| 1200×627px | JPG/PNG | 8 MB | og:image |
It's not enough to just set the tags; you must also ensure the image is cached by platforms. Use their debuggers to force refresh.
How to automate OG image generation?
For sites with hundreds or thousands of pages, manual creation is impossible. We use dynamic generation. On Next.js, we leverage ImageResponse from next/og:
// app/og/route.tsx import { ImageResponse } from 'next/og'; export async function GET(req: Request) { const { searchParams } = new URL(req.url); const title = searchParams.get('title'); return new ImageResponse( <div style={{ display: 'flex', background: '#1e40af', width: '100%', height: '100%', padding: '60px' }}> <h1 style={{ color: 'white', fontSize: 64 }}>{title}</h1> </div>, { width: 1200, height: 630 } ); } On PHP/Laravel, we use spatie/browsershot or intervention/image. Example with Browsershot:
$image = Browsershot::url('https://example.com/og-preview?title=' . urlencode($post->title)) ->windowSize(1200, 630) ->save('og/' . $post->slug . '.jpg'); This approach lets us generate previews on the fly or upon content save. We applied it to an e-commerce store with 10,000 products—generation takes under one second per image. Automated generation delivers a consistent style across all pages, instant updates when design changes, zero manual work, and the ability to A/B test different templates. Dynamic generation is hundreds of times faster than manual creation.
Static vs dynamic approach
| Criteria | Static (manual) | Dynamic (automatic) |
|---|---|---|
| Time per image | 10–30 minutes | 0.1–1 second |
| Scaling | Labor-intensive | Easy |
| Consistent style | Yes if enforced | Guaranteed |
| Design update | Redo everything | Change code |
Dynamic approach is especially effective for news portals and e-commerce sites where hundreds of new pages appear daily.
What's included in OG image setup
- Audit of current OG tag markup
- Design system creation: 3–5 templates (homepage, article, product, category)
- Template coding and integration of generation logic
- Coverage of all page types, including fallback images for pages without content
- Debugging previews in social validators (Facebook Sharing Debugger, Twitter Card Validator, LinkedIn Post Inspector) and manual checks in Telegram and VK
- Image weight optimization (JPEG quality, WebP, lazy-load)
- Documentation and editor training
Cost depends on the number of templates and integration complexity. We'll find the optimal option for your budget.
How we work
- Analysis. Check current meta tags, identify problematic pages.
- Design. Develop mockups following your brand guide.
- Implementation. Code templates and connect them to your CMS/framework.
- Testing. Verify display across all major platforms.
- Deployment. Launch to production with monitoring.
Timelines and experience
Setting up templates for the homepage, a standard page, and a blog takes 1 to 3 days depending on design complexity. Integrating dynamic generation for a catalog adds 1–2 days. We have worked with the Open Graph protocol for over 5 years and completed 50+ projects with custom generation. Improved CTR from optimized previews can reduce your ad budget by up to 30%, and the investment in OG image development pays off within the first month. We guarantee correct display on all popular platforms and provide prompt post-launch support.
To make your site previews look professional, contact us. Order OG image development and boost your post CTR. Get a consultation on setting up OG images for your project.







