Medium SEO audit
Medium provides strong domain authority and a built-in audience — but no custom meta descriptions, no JSON-LD structured data, no robots.txt control, and no AI visibility configuration. Run a free audit to understand your Medium publication's technical SEO profile and what platform limitations apply.
Audit your Medium publication free →What DeepSEOAnalysis checks on Medium publications
Canonical tag configuration and import tool usage
The most important technical SEO check for Medium content is canonical tag configuration. The audit verifies whether Medium posts have canonical tags pointing to the correct original source URL (for cross-posted content), or whether they carry Medium's own canonical (indicating the content was not imported via the import tool, creating a duplicate content issue). For standard medium.com publications: each post at medium.com/@publication/post-slug should have a `link rel="canonical"` tag; if the content exists on your own site, this canonical should point to your site's URL. For custom domain Medium publications: the canonical should point to yourpublication.com/post-slug (the custom domain URL). The audit checks: canonical URL is present in the initial HTML; canonical URL is a full absolute URL (not relative); canonical URL returns a 200 status code (not a redirect or 404); and for cross-posted content, the canonical points to the original source and not back to Medium itself. The audit also checks whether Medium's auto-generated Open Graph tags are present (og:title, og:description, og:image) — Medium generates these from the post's title, subtitle, and featured image.
Meta tag coverage on Medium posts and publications
Medium generates a limited set of meta tags automatically. The audit checks what is and is not present. Present by default: `meta name="description"` from the post subtitle or first paragraph excerpt; `meta property="og:title"` from the post title; `meta property="og:image"` from the featured image; `meta name="twitter:card"` for Twitter/X card rendering; `link rel="canonical"` (may point to Medium or the original source). Not present on Medium: custom keyword-specific meta descriptions (you cannot override Medium's auto-generated excerpt); meta robots with custom directives (Medium controls its own robots meta tags at the domain level); structured data JSON-LD beyond minimal Open Graph markup. The audit also checks the post's title length — Medium titles appear directly in the `title` tag and in Google search results. Titles longer than ~60 characters are truncated in search results. The subtitle field (used for meta description auto-generation) should be under 155 characters for optimal meta description display. Neither of these is enforced by Medium's editor, so overly long titles and subtitles are common.
JSON-LD structured data availability on Medium
Medium generates no JSON-LD structured data on articles, publications, or author pages. The audit confirms the absence of: Article or BlogPosting schema (with required properties: headline, datePublished, author, image); Person schema on author profile pages (important for E-E-A-T authorship signals); Organisation schema for publications; FAQPage schema for question-format content. This is a platform limitation — there is no mechanism for Medium publishers to add JSON-LD to their posts. Workarounds do not exist for standard Medium publications. The practical impact: Medium articles are not eligible for Article rich results, FAQ rich results, or author attribution rich results in Google Search. For publications using Medium's custom domain feature, the structured data gap is the same — Medium controls the HTML template regardless of domain. The audit also checks whether Medium's own schema markup (if any) is correctly formed — Medium has occasionally added minimal structured data to its own platform pages.
AI crawler access and robots.txt on Medium
Medium's robots.txt is controlled entirely by Medium Inc. and cannot be customised by individual publishers or publications. The audit checks Medium's current robots.txt at medium.com/robots.txt to determine: whether AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended) are blocked or allowed; whether your publication's URL paths are included in any allow or disallow rules; and whether the sitemap is declared. Medium's robots.txt policy has changed over time — Medium has previously blocked AI training crawlers while allowing AI search crawlers. The audit surfaces the current state of AI crawler access as it applies to your publication's URLs. For custom domain Medium publications: the robots.txt is served by Medium but typically at your custom domain's /robots.txt endpoint — the same Medium-controlled robots.txt. You cannot add custom AI crawler allowances, disallowances, or sitemap directives for your custom domain Medium publication. This is a significant AI visibility limitation — llms.txt placement is similarly impossible on Medium, and FAQPage JSON-LD for AI citation is unavailable.
Core Web Vitals for Medium publications
Medium's pages are served from Medium's infrastructure (hosted at medium.com CDN or Fastly CDN for custom domains). TTFB is typically fast. However, Medium loads substantial JavaScript for its reading experience (progress bar, clapping mechanism, reader engagement features, paywall logic, recommendation widgets) that creates INP challenges. The audit surfaces CrUX field data for Medium URLs: LCP (typically the article hero image — Medium serves images at appropriate sizes but without fetchpriority="high" on the hero image, LCP can be delayed by JavaScript initialisation); CLS (Medium's paywall prompt, cookie consent banner, and floating recommendation widget can cause layout shift after initial render); INP (Medium's JavaScript bundle for the reading experience, recommendation feeds, and engagement features creates long tasks that can delay interaction response). Performance improvement options for Medium publishers are essentially zero — Medium controls the JavaScript, CDN configuration, and resource loading order entirely. The CWV audit provides field data to compare Medium's performance against your own site (a factor in the "Medium vs own blog" publishing decision).
AI visibility signals on Medium publications
Medium's AI visibility profile has specific limitations and one advantage. Limitations: (1) robots.txt — AI crawler access is controlled by Medium, not you; the current state (allow or block) is surfaced by the audit but cannot be changed by publishers. (2) llms.txt — not possible on Medium at any URL, for any publication, custom domain or not. (3) FAQPage JSON-LD — not available (no structured data support). (4) Question-heading ratio — whether ≥20% of headings in your post are phrased as questions is an editorial decision you can make within Medium's editor, but the heading types available (H2/H3 equivalent in Medium's editor, via the "T" formatting menu or Ctrl+H) support question-format headings. (5) Content chunkability — whether sections average ≤400 words per heading is also an editorial decision achievable in Medium. One potential AI visibility advantage: Medium's high domain authority means Medium articles may be included in AI training datasets that prioritise established, high-quality domains. However, this is speculative and depends on Medium's robots.txt policy toward AI training crawlers (which Medium has restricted). For AI citation in search systems (not training), content being crawlable is required — the current robots.txt state for AI search crawlers is what determines this.
Medium SEO best practice workflow
- Publish on your own site first — for any content you want to rank on your own domain, publish there first and let Google index it before cross-posting to Medium.
- Use Medium's import tool for cross-posts — import via medium.com/p/import instead of copy-pasting. The import tool automatically sets the canonical tag pointing to your original URL, preventing Medium's version from competing with yours in search.
- Set a compelling subtitle under 155 characters — Medium uses the subtitle field for the meta description. Keep it concise, keyword-relevant, and under 155 characters since you can't customise the meta description otherwise.
- Keep post titles under 60 characters — Medium uses the post title directly as the HTML title tag. Titles over 60 characters are truncated in Google search results.
- Use question-format H2/H3 headings where appropriate — within Medium's editor, use the heading format (Ctrl+H) for H3 headings. Question-format headings improve People Also Ask eligibility and AI citation signals despite the lack of FAQPage schema.
- Consider a custom domain publication — if Medium is your primary publishing platform, a custom domain (blog.yourcompany.com → Medium) accumulates domain authority on your domain rather than on medium.com.
Medium SEO FAQ
- Does Medium content rank in Google?
- Yes — Medium.com is a high-authority domain and individual articles on medium.com can rank well in Google search results, benefiting from Medium\'s domain authority. However, there are key trade-offs: (1) You are building equity on medium.com, not your own domain — links, engagement, and ranking signals benefit Medium as the domain, not your personal or business domain. (2) Google may de-duplicate Medium articles against the canonical source — if you\'ve published the same content on your own site first, Google should (per canonical tags correctly set) rank your site\'s version, not Medium\'s. (3) Medium\'s no-custom-meta-description limitation means all search result snippets use auto-generated excerpts or Medium\'s default page descriptions, which may not be keyword-optimised or compelling. (4) For publications on Medium custom domains (publication.com pointing to Medium), you are building domain authority for your custom domain — a stronger arrangement than a medium.com/@publication subdirectory. For SEO-conscious content strategy, Medium is best used as a syndication channel with canonical tags pointing to your primary site, not as the primary publishing destination for content you care about ranking.
- How do I use Medium\'s import tool correctly for SEO?
- Medium\'s import tool (medium.com/p/import) allows importing articles from external URLs and sets a canonical tag in the Medium post pointing back to the original source URL. This is the correct way to cross-post content from your site to Medium without creating duplicate content issues. How it works: paste your article URL into the import tool → Medium fetches the content → creates a Medium post with `link rel="canonical" href="[your-original-url]"` in the page head. This tells Google that your site\'s version is the canonical (authoritative) copy, and Medium\'s version is the duplicate. Google should index your site\'s version and not the Medium version for organic search. Correct usage: (1) publish on your own site first; (2) wait for Google to index your site\'s version (check GSC URL Inspection); (3) import to Medium using the import tool; (4) verify the Medium post shows your original URL as the canonical (check the rendered HTML of the Medium post). Incorrect usage to avoid: manually copying and pasting content into Medium without using the import tool (this creates a Medium post with Medium\'s own canonical — a duplicate pointing to Medium, not to you); or publishing on Medium first before your own site (which may give Google\'s index priority to Medium\'s version).
- Can I use a custom domain with Medium?
- Yes — Medium allows publications to use custom domains (e.g., blog.yourcompany.com or yourpublication.com pointing to Medium\'s servers via DNS CNAME). Custom domain Medium publications have a distinct SEO advantage over standard medium.com/@publication or medium.com/publication-name URLs: all domain authority, backlinks, and ranking signals accumulate on your custom domain rather than on medium.com. With a custom domain Medium publication: articles are served at yourpublication.com/your-article-slug; canonical tags point to yourpublication.com (not medium.com); backlinks to articles benefit your custom domain\'s authority. The custom domain configuration requires DNS access (setting a CNAME record pointing to medium.com) and a paid Medium membership to enable for the publication. Custom domain Medium publications are the closest to a self-hosted blog in terms of SEO structure, but you retain Medium\'s platform limitations (no custom robots.txt, no custom structured data, no access to server configuration). For a company blog published on Medium with a custom domain, the SEO value proposition is reasonable if you accept the platform constraints.
- What are the biggest SEO limitations of Medium?
- Medium\'s platform-level SEO limitations: (1) **No custom meta descriptions** — Medium generates meta descriptions from the post\'s first paragraph or its subtitle field. You cannot set a keyword-optimised, character-limited meta description. All Google search result snippets for Medium articles are auto-generated. (2) **No JSON-LD structured data** — Medium generates no Article, Person, FAQPage, or Organisation schema markup. Medium adds its own minimal meta tags, but no structured data that would enable rich results. (3) **No robots.txt customisation** — Medium\'s robots.txt is controlled entirely by Medium Inc. You cannot add AI crawler allowances, set crawl rate controls, or configure any robots.txt directives for your publication. (4) **No custom head injection** — you cannot add custom `head` elements: no verification meta tags for Google Search Console (GSC verification on a Medium subdirectory is not possible), no custom Open Graph tags, no structured data. (5) **Paywalled content reduced indexability** — Medium\'s metered paywall may prevent Googlebot from accessing the full content of paywalled stories, reducing their indexing quality. Medium does have a free article quota for crawlers, but management is at Medium\'s discretion. (6) **Platform dependency** — changes to Medium\'s ranking, domain authority, or business model directly affect your content\'s search visibility.