Operating

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.

PDFShift: An HTML-to-PDF API at $8,500/Month — One Channel Ended a Two-Year Plateau; a $500K Sale Fell Through

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

TimeNumbers / events
BackstoryFailed 48 projects before finding his first real success with VoilaNorbert
DevelopmentAbout 2 months. Used Pyppeteer (a Python port of Puppeteer) to drive Chrome
May 22, 2018Launched 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, 2018Featured on Product Hunt. #1 for the day, #3 for the week
Jan 2020About 150 customers, $3,200/month (about ¥480,000), profit around $1,000/month
Sep 2020Turns profitable (2 years, 4 months after launch)
Jan–Apr 2021MRR $6,500 (about ¥980,000), nearly double the prior year’s $3,600
Sep 2021Growth stalls. Customer count flatlines at around 300 for over two years
Apr 2023Growth resumes. Accelerates further by November
Feb 2024After 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.

Sources

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

Found this useful? Share it
Share on X