The developer resource
for oEmbed
Discover providers, test endpoints, and debug your oEmbed integration — all in one place.
Tools
Everything you need to work with oEmbed
Provider Directory
Search and browse all 369 registered oEmbed providers.
URL Tester
Paste any URL and see the raw oEmbed response with a live preview.
Endpoint Validator
Validate your oEmbed endpoint against the full specification.
Discovery Checker
Check if a page has correct oEmbed discovery link tags.
About
What is oEmbed?
oEmbed is an open protocol that turns plain URLs into rich embeds. Paste a YouTube link into WordPress and get a playable video; share a Flickr photo on Slack and see the image inline — that's oEmbed at work. Instead of writing custom integration code for every service, any consumer (blog, CMS, chat app) can call a single standardized API on any provider (YouTube, Spotify, Twitter) to fetch embed markup, thumbnails, and metadata.
How it works
Use Cases
oEmbed powers the web you use every day
CMS Auto-Embeds
WordPress, Ghost, and other CMS platforms use oEmbed to automatically convert pasted URLs into rich embeds — videos, tweets, and more — without any manual embed code.
WordPress oEmbed docsChat Link Previews
Slack, Discord, and Teams use oEmbed (alongside Open Graph) to generate rich link previews when users share URLs, showing video thumbnails, article summaries, and more.
Learn the protocolCustom Integrations
Build your own oEmbed consumer or register as a provider. Libraries exist for Node.js, Python, Ruby, PHP, and more — or call the HTTP API directly.
Try the URL testerFAQ
Frequently asked questions
What is oEmbed?
oEmbed is an open protocol that lets a website turn a plain URL into a rich embed — a playable video, an image, a tweet, or a link preview — by calling a single standardized API. Instead of writing custom code for every service, a consumer (like WordPress or Slack) requests embed data from a provider (like YouTube or Spotify) and gets back JSON describing how to display the content. It was introduced in 2008 and is supported by 369+ providers.
How does oEmbed work?
An oEmbed consumer sends an HTTP GET request to a provider's oEmbed endpoint, passing the content URL as a query parameter (e.g. /oembed?url=...). The provider responds with a JSON (or XML) object containing the content type, a title, a thumbnail, and — for video and rich content — an HTML snippet the consumer can embed directly. The consumer renders the response based on its 'type' field.
What are the four oEmbed response types?
oEmbed defines four response types: 'photo' (a static image with url, width, and height), 'video' (a playable video with an HTML embed snippet), 'rich' (generic rich HTML content such as a tweet or map), and 'link' (metadata only, used to render a link preview card). The 'type' and 'version' fields are required on every response; version must always be '1.0'.
What is the difference between oEmbed and Open Graph?
Open Graph (og: meta tags) describes a page for link previews — a title, description, and image — and is read by scraping the page's HTML. oEmbed is an API that returns ready-to-use embed HTML, so a consumer can render an interactive player or widget, not just a static preview. Many platforms use both: Open Graph for simple previews and oEmbed for rich, embeddable content.
How do I find a provider's oEmbed endpoint?
There are two ways. First, check the provider registry — a catalog of known providers, their endpoint URLs, and the URL patterns they support; you can search 369+ providers in the oembed.org directory. Second, use link-tag discovery: fetch the content page and look for a <link rel="alternate" type="application/json+oembed"> tag pointing to the endpoint. oembed.org provides tools to test both methods.
How do I add oEmbed support to my own site?
To become a provider, create an endpoint (e.g. /oembed) that accepts a 'url' query parameter, validates that the URL maps to your content, and returns a JSON response with the required fields for your content type. Add a <link rel="alternate" type="application/json+oembed"> discovery tag to your pages, then register your provider in the official oEmbed registry. You can validate your endpoint against the spec with the oembed.org endpoint validator.