PDFShift: An HTML-to-PDF API at $8,500/Month — One Channel Ended a Two-Year Plateau; a $500K Sale Fell Through
A Paris-based solo developer's HTML-to-PDF conversion API earned $9 on day 20, reached 150 customers and $3,200/month by January 2020, and turned profitable that September. MRR flatlined for over two years starting September 2021, then returned to 8–9% monthly growth after resuming Google Ads, now at $8,500/month.
Dollar figures throughout are converted at an approximate rate of $1 = ¥150.
PDFShift is an API that does exactly one thing: convert HTML to PDF. Cyril Nicodème, based in Paris, built it alone, launched it in May 2018, and still runs it alone six years later. Effort is about 2 hours a week, with roughly 300 customers and $8,500/month (about ¥1.28M) in revenue.
What makes this case interesting is that it isn’t a straight up-and-to-the-right growth story. From September 2021, revenue didn’t move for over two years. And what ended that plateau was a channel he’d judged “not working” and abandoned back in the early days.
Six years, tracked
| Time | Numbers / events |
|---|---|
| Backstory | Failed 48 projects before finding his first real success with VoilaNorbert |
| Development | About 2 months. Used Pyppeteer (a Python port of Puppeteer) to drive Chrome |
| May 22, 2018 | Launched on Indie Hackers. Post got 20+ upvotes in 2 days |
| Day 20 post-launch | $9/month. Post titled “From 0$ to 9$ in 20 days” got 70+ upvotes |
| Sep 11, 2018 | Featured on Product Hunt. #1 for the day, #3 for the week |
| Jan 2020 | About 150 customers, $3,200/month (about ¥480,000), profit around $1,000/month |
| Sep 2020 | Turns profitable (2 years, 4 months after launch) |
| Jan–Apr 2021 | MRR $6,500 (about ¥980,000), nearly double the prior year’s $3,600 |
| Sep 2021 | Growth stalls. Customer count flatlines at around 300 for over two years |
| Apr 2023 | Growth resumes. Accelerates further by November |
| Feb 2024 | After analyzing the cause, resumes a Google Ads partnership |
| Now | $8,500/month. 8–9% monthly growth since February 2024 |
The cost structure as of January 2020 is also disclosed: $250/month for OVH server costs, $500/month for Google Ads, $500/month for the agency running that ad account, and $150/month for Customer.io. Against $3,200/month in revenue, profit was about $1,000. Most of gross margin was flowing to ads and outsourcing.
The “do one thing” design
Nicodème’s explanation is consistent: “PDFShift does one thing and does it well.” The target is developers who want to convert HTML to PDF without complexity. He accepted the fact that competitors already had an established customer base at the time he was building as positive proof the market existed. Features are deliberately narrow (header/footer image loading, watermarking, encryption) the practical things developers actually need (JPG/PNG/WEBP output was added later).
Infrastructure runs on AWS and Vercel, payments on Stripe and PayPal, analytics on ProfitWell and Plausible. In 2021 he introduced overage billing, a mechanism letting customers pay extra beyond their plan limit rather than being blocked. This stops the churn of customers who hit their limit and cancel, while also lifting average revenue per user. Even with customer count flat, this is where room for revenue to move comes from.
What ended the plateau was a channel he’d abandoned early
The decisive factor was Google Ads. But the story isn’t that simple.
In a January 2020 interview, he ranked acquisition channels by effectiveness like this: #1 Product Hunt (“clearly had a big impact,” still the largest traffic source at the time), #2 Quora (answering PDF-related questions (“the main source of new users today”), #3 AlternativeTo (giving free credits to people who left reviews and stars) “a major, passive, source”). And Google Ads was rated as “underperforming compared to the organic channels.” That judgment came after paying $500/month in ad spend plus $500/month in management fees.
He then tried content, forums, and partner newsletters, none of which grew, and from September 2021 MRR stopped moving for over two years. The turning point was growth resuming in April 2023. After re-analyzing the cause in February 2024, he resumed the Google Ads partnership. From there, monthly growth of 8–9% returned, and revenue moved from around $6,500/month to $8,500.
The same tactic, run by the same person, worked when the timing changed. That’s the core of this case.
Why Google Ads was the one that ultimately stuck
Nicodème’s own explanation is: “developers search for PDF conversion solutions while they’re at work.” This captures exactly what search advertising is good at. When a developer types “html to pdf api,” it’s at the exact moment they’re stuck mid-implementation, and at that point, budget and internal approval are already in place. Because the purchase decision has effectively already been made at the moment of the search, no persuasion step is required.
By contrast, Facebook ads, Reddit, Twitter, partner newsletters, and forum activity all failed. These are channels that reach “people who don’t currently have this problem,” which doesn’t pair well with a B2B developer API where the moment of need is sudden and specific. He also tried affiliates, which didn’t work for such a technical, niche readership.
So why didn’t it work at first? The source doesn’t explicitly say. But looking at the 2020 structure ($3,200/month in revenue, $1,000/month spent on ads and management, and only $1,000/month left in profit) it’s natural to read this as not having enough capital at the time to keep testing. With the same ad channel, once LTV had built up and overage billing had lifted per-user revenue, the acceptable CPA ceiling would have changed. It’s plausible that what wasn’t working wasn’t the tactic itself, but the unit economics of that period.
His own lesson points the same direction: “Don’t run a lot of experiments at once. Test them properly and run them one at a time, in sequence.” “Try one thing at a time, put everything into making it work, and see if it sticks.”
The $500,000 deal that fell through
There was also a sale on the table for PDFShift. A company offered $500,000 (about ¥75M), a multiple Nicodème describes as 5.5x, and an LOI was signed. But the buyer later dropped the offer by 20% to $400,000, and changed the payment terms to “half cash, half a year later.” Nicodème didn’t accept, and the deal fell apart. He also listed it on Acquire.com, but no competitive offers came in.
There’s no reason to give up an asset generating $8,500/month on two hours of work a week for a weakened $400,000 offer. That’s the judgment. When thinking about an exit for an indie project, this episode illustrates that you should weigh “the effective hourly rate of not selling” alongside “the amount you’d sell for.” He subsequently raised his own targets, aiming for $12,000 by summer 2024 and $15,000 by end of 2025.
Conditions for reproducing this, and its limits
What’s easy to transplant is the format itself: a scoped-down developer API. Development took two months, initial infrastructure cost $250/month, and first-month revenue was $9. A business of this scale can be started alongside a day job. His refrain, “SHIP IT!”. A project you don’t ship can never succeed, carries real weight coming from someone who failed 48 times first.
Harder to reproduce: it took 2 years and 4 months to become profitable, and whether you can survive that stretch depends on where your living expenses come from (he ran several projects in parallel, including ImprovMX). The #1-for-the-day result on Product Hunt is another, exposure efficiency for dev tools on Product Hunt in 2018 versus today is different. So is being able to “wait it out without shutting down” through two years of plateau. That was possible precisely because the operating cost was two hours a week; the same call couldn’t be made with employees on payroll.
Stagnation isn’t necessarily failure. The reading this case offers is that it might just be a period where the unit economics haven’t yet caught up with the tactic.
Related reading
- ScrapingBee’s eight-figure-dollar exit — the full arc of another French-built API business, run to completion
- How Plausible Analytics reached $1M ARR — the bootstrapped growth breakdown for the analytics tool PDFShift itself uses
Sources
- Founder Starter Story「How I Doubled Revenue To $6.5K/Month In One Year」
- Founder Starter Story「How I Developed A $3.5K/Month Tool That Converts HTML To PDF」
- Founder Starter Story「I Almost Sold My $9K/Mo Micro-SaaS」
This article summarizes and analyzes the public sources above. Please refer to the primary sources for details.
You may freely quote or republish this article in news media, blogs, or AI answers, provided you credit "Small Start (small-start.com)" and link to this page. No prior permission is needed. Reprint & quotation policy →
Similar cases

A Notion-to-spreadsheet sync add-on hits $8,400 MRR: how it reached 400+ paying customers in two weeks
SaaS
Launch Fast: Built in 48 Hours, $15K/Month in 30 Days — Inside the Non-Technical Founder’s Path to $450K/Month
SaaS
AppAlchemy: A Mobile App Builder Built in 2 Weeks Hit $10,000+ MRR in a Year — Finding an Open Seat
SaaS
Superpower ChatGPT: Built in 3 Days, Free for 9 Months — 420K Downloads and 350K Newsletter Subscribers
SaaSMost read
- 1
Peing: Built in 6 Hours, 200M Monthly PV in One Month — Sold at the Breaking Point of Virality
13 recent visits - 2
Six AI videos, ¥153,030 in the first month — one video with 4.22 million views drove two-thirds of TikTok monetization revenue
11 recent visits - 3
Zenn: A Solo-Built Dev Community Transferred to Classmethod 4.5 Months After Launch
- 4
ScrapingBee: Two Failures, $5M ARR, an 8-Figure All-Cash Exit — the Complete “By-the-Book” Journey
- 5
MENTA, Shingo Irie's 30th Indie Project: From ¥1.4M Monthly Revenue to a Share Transfer to Lancers — the Full Story
Latest articles
- 2026年9月1日
CyberLeads: After 19 Failed Projects, a "Freshly Funded Companies" Lead List Built in 31 Days Now Makes $53.7K/Month — with a Free Newsletter as the Sales Engine
- 2026年9月1日
Sauna Ikitai: A Hobby Search Site Reaches ¥72.88M in Year-Two Revenue — Zero Employees and a ¥370/Month Subscription Capped at 10,000 Members
- 2026年8月31日
SEObot: An AI That Writes SEO Articles Hits $46K MRR and $1.8M Lifetime — the Numbers Come from a Public Stripe-Linked Dashboard
- 2026年8月31日
Feather: The "Write in Notion, Publish as a Blog" SaaS Sold for $250K Two Years In — the Buyer Was Tibo, Who Exited Tweet Hunter
- 2026年8月27日
GummySearch: The Reddit Research SaaS That Chose to Close While Profitable — Four Years Ended by a Commercial API License That Never Came