Medium articles are great to read online but terrible to save. Medium's built-in export is limited to your own posts, and Ctrl+P gives you the full UI chrome — sidebar navigation, clap buttons, follow prompts, recommended articles, and sticky banners. Pretty PDF extracts just the article.
Free — 3 PDFs per month. No credit card required.
Medium is designed as a reading platform, not a publishing format. Every design decision optimizes for on-screen engagement: keeping you scrolling, clicking claps, following authors, and opening the next recommended article. That design works beautifully in the browser. It works terribly when you try to capture the content as a static document.
The most immediate problem is UI clutter. A typical Medium article page includes a sticky top navigation bar, the author's profile card with a follow button, a floating clap/bookmark bar that follows you as you scroll, a "sign up for more" interstitial that appears mid-article for non-members, a "recommended reading" section at the bottom, related articles from the publication, and a footer with Medium's own navigation. When you press Ctrl+P, most of this comes along for the ride. Your clean article becomes a five-page PDF where two pages are navigation and promotional elements.
Images present a subtler challenge. Medium lazy-loads images as you scroll — they are not present in the initial HTML payload. The platform uses its own CDN (miro.medium.com) with multiple resolution variants, and the actual image URL is constructed dynamically based on viewport width. A naive print or save operation may capture placeholder elements instead of the actual images, or grab low-resolution thumbnails instead of the full-size versions the author uploaded.
Custom domains add another layer of complexity. Many of Medium's most popular publications — Better Programming, Towards Data Science, The Startup, OneZero, and hundreds of others — run on their own custom domains. When you visit betterprogramming.pub or towardsdatascience.com, you are reading a Medium article, but the URL gives no indication of that. Any tool that relies on checking the domain name against "medium.com" will miss these entirely. The content is identical to a medium.com article, served by Medium's infrastructure, using Medium's templates and JavaScript — but the domain is different.
Member-only content creates a visibility boundary. Medium's paywall shows non-members a preview (typically the first few paragraphs) with a "become a member" prompt covering the rest. The full article HTML is not present in the page source for non-members — Medium does not simply hide it with CSS. This means no tool can extract content you are not authorized to see, but the tool does need to correctly handle the boundary between visible and gated content without producing broken output.
Pull quotes, embedded content, and code blocks each have their own markup patterns. Medium uses custom HTML structures for pull quotes (large, emphasized block quotations), Gist embeds (code blocks served from GitHub's Gist platform), embedded tweets, and YouTube videos. A generic HTML-to-PDF converter treats these as opaque blocks or strips them entirely, losing content that may be central to the article.
A dedicated parser that understands Medium's page structure and extracts exactly the content you want.
Pretty PDF does not rely on the URL to identify Medium articles. It checks for the <meta name="generator" content="Medium"> tag that Medium injects into every page it serves. Whether the article is on medium.com, betterprogramming.pub, or a completely custom domain, it is detected and parsed correctly.
The parser strips Medium's entire UI shell — navigation bar, clap buttons, follow prompts, recommended articles, sign-up interstitials, and footer — leaving only the article title, subtitle, author byline, publication date, and the full article body with all its formatting intact.
Pretty PDF extracts whatever content is visible in your browser. If you are a paying Medium member, you get the full article. If you are viewing a paywalled article as a non-member, you get the preview content Medium shows you. Pretty PDF does not bypass paywalls or access content you cannot already see.
Medium serves images through its own CDN with dynamically constructed URLs and multiple resolution variants. Pretty PDF resolves these CDN URLs to their full-resolution versions and embeds them directly in the PDF. Lazy-loaded images that have been rendered in your browser are captured at the quality the author intended.
All five Pretty PDF templates — Clean, Minimal, Corporate, Academic, and Dark Mode — work with Medium's content structure. Each template applies professional typography with embedded fonts, proper heading hierarchy, and spacing tuned for long-form article content. Choose the template that fits how you will use the PDF.
From any Medium article to a clean PDF in under ten seconds.
Navigate to the article you want to save. This works on medium.com, any custom Medium domain (like betterprogramming.pub or towardsdatascience.com), and member-only articles you have access to.
Click the extension icon in your browser toolbar. Pretty PDF automatically detects that the page is a Medium article — even on custom domains — and activates the dedicated Medium parser.
Select from five professionally designed templates. Clean and Minimal work well for long-form essays. Academic is ideal for research-oriented articles. Corporate suits articles you need to share with colleagues.
Click Generate PDF. The server extracts the article content, strips all Medium UI elements, resolves images, applies your template with embedded fonts, and returns a clean PDF ready to read, print, or share.
One of Medium's most popular features for publications is custom domain support. A publication can use its own domain name — betterprogramming.pub, towardsdatascience.com, entrepreneurshandbook.co, or any other domain — while Medium handles all the hosting, content delivery, and reader experience. The publication gets brand identity through its own URL; Medium provides the infrastructure.
This creates a problem for most PDF tools. If a tool identifies Medium articles by checking whether the URL contains "medium.com", it will miss every article published on a custom domain. And there are thousands of them. Publications like Better Programming, Towards Data Science, The Startup, Level Up Coding, JavaScript in Plain English, and UX Collective all use custom domains. Some of Medium's most widely-read content lives on these domains.
Pretty PDF solves this by not relying on the URL at all for Medium detection. Instead, it checks the page's HTML for the <meta name="generator" content="Medium"> tag. Medium injects this tag into every page it serves, regardless of the domain name. It is part of Medium's server-side template and cannot be removed by publication owners. This means Pretty PDF correctly identifies and parses Medium articles on any domain — medium.com, a publication's custom domain, or even a personal blog that uses Medium as its CMS.
No configuration is needed on your end. You do not need to tell Pretty PDF which domains are Medium publications. The detection is fully automatic: visit any page, click the extension, and if the page is powered by Medium, the Medium parser activates. If it is not a Medium page, the generic extraction pipeline handles it instead. The process is seamless either way.
<meta name="generator" content="Medium"> tag that Medium injects into every page it serves, regardless of the domain name. No configuration is needed. If the page is powered by Medium, Pretty PDF recognizes it.Free tier, no credit card. 3 PDFs per month with all templates included.
Install Free Extension