Growing a side project in a crowded market to $1M ARR by playing the long gameIH+ Subscribers Only

Justin Duke, founder of Buttondown

Justin Duke didn't like how established players were powering newsletters. So, he built Buttondown on the side while working a cushy full-time job. That job gave him the runway —and peace of mind — that he needed. Now, it's bringing in over $1M ARR.

Here's Justin on how he did it. 👇

I’m Justin Duke, and I run Buttondown, the best way to start and grow your newsletter.

I studied computer science, and I spent the first chunk of my career as an engineer — and then engineering manager — at Stripe and Amazon. I learned an enormous amount at both — how good software is built, how good teams are run, how much of a company’s success is downstream of boring operational excellence rather than any single brilliant idea.

Right before joining Stripe, I created Buttondown as a side project. It started in 2017 as a tool I built for myself because every other newsletter platform felt bloated, hostile, or both — I wanted something markdown-first, quiet, respectful of both the writer and the reader. It turned out I was not the only person who wanted that. Buttondown is now a fully bootstrapped, profitable business that powers newsletters for tens of thousands of writers, from hobbyists sending to a dozen friends to authors and companies sending to hundreds of thousands.

The measure of progress I’m proudest of: every day, someone churns from a billion-dollar valuation company in favor of Buttondown.

Our current run rate is over $1M ARR.

It all started with spite, and a bit of hubris.

I wanted to send a newsletter after using TinyLetter for a long time. I looked at the existing options, and each one made me feel like the product, not the customer — endless upsells, engagement-maximizing dark patterns, editors fought me every time I tried to write a plain paragraph. I remember thinking — with the specific arrogance of an engineer who had never run a business — “How hard could this possibly be?”

The answer, for the record, is very. But by the time I learned that, I was in too deep.

Buttondown homepage

The initial version cost almost nothing except time, and the time was mine.

My financial situation at the time was comfortable. I had a good job, which is the unglamorous truth behind many “brave” indie founder stories. The money required was close to zero, which is one of the quiet miracles of software as a business. The real cost was opportunity cost — the projects I didn’t build, the evenings I didn’t spend elsewhere.

I spent the surplus of my attention here instead of somewhere else, no small thanks to my wife, who was patient and understanding enough to get why I was doing so! I built it in the margins of my full-time job — early mornings, late nights, the occasional weekend. That constraint was secretly a gift. When you only have a few hours a week, you can’t afford to build anything speculative. You build the one thing the product needs, and nothing else, which was easy in a mature industry like email.

The first version was embarrassingly small: a text box that took markdown, a subscribe form, and a button that sent an email. That was it. No analytics, no automations, no templates — let alone, for a while, a user model.

I also stood on the shoulders of a lot of unglamorous infrastructure. Email delivery is genuinely hard — deliverability, spam compliance, the whole labyrinth — so I leaned on existing sending infrastructure rather than pretending I could reinvent SMTP from scratch: first Mailgun, then a bevy of other ESPs, and more recently, we've rolled our own. The rest was Django, Heroku, and lots of coffee.

I validated it the cheapest way I knew, by using it every single day. It solved a real problem for exactly one person. Then, I put it online, charged five dollars a month, mostly as a joke, and someone I had never met paid me. That was the moment it stopped being a toy.

The stack is Django and Python on the backend, Postgres as the database, and the front end has evolved over the years but is currently Vue for the author-facing app and Next for the docs/marketing site.

Scale drove the biggest evolutions — we rewrote and hardened the parts that handle email sending and analytics several times as volume grew, because the naive version that works for a hundred subscribers falls over at a hundred thousand. The rest is remarkably close to what I wrote in the first year.

The hardest technical challenge is email deliverability, full stop. Opaque rules at major inbox providers govern this moving target, and getting it right is less a coding problem than an operational discipline — reputation, authentication, feedback loops, and a lot of patience. It’s the least glamorous part of the business, and quite possibly the most important. DNS also, which is technically a subset of deliverability.

Most of Buttondown’s growth came from a good product and customers telling their friends. There was no viral launch, no single Product Hunt day that changed everything. Instead, growth resulted from a slow, compounding accretion of people who liked the tool enough to recommend it.

A few things did matter, though. Early on, I wrote — a lot — in public at jmduke.com and elsewhere about building the product, my decisions, and the unglamorous realities of running a software business. That writing didn’t convert in a measurable funnel sense, but it built trust with exactly the kind of people who would eventually become customers. Writers tend to want to use a tool built by someone who obviously cares about writing.

LLM-based acquisition has bent the curve up a bit too. Claude loves us.

But word of mouth from happy customers is the most durable channel, which sounds like a non-answer but is really a strategy: I obsess over support. When someone emails Buttondown with a problem, a real human — for a while, often me — quickly answers and solves it. In an era of AI chatbots and week-long ticket queues, being genuinely responsive is a marketing channel disguised as a cost center.

Newsletters' inherent visibility is another quiet engine. Every email Buttondown sends carries our fingerprints, and every public archive is a small advertisement to the next writer. The product markets itself every time a customer hits send.

If I had to start over, I’d charge more, sooner, and apologize for it less.

I spent years under-pricing Buttondown out of a kind of misplaced guilt, and the customers who genuinely valued the product would happily have paid more the whole time.

Under-pricing doesn’t make you generous. It makes you fragile, and it starves the business of the resources it needs to serve those same customers well.

The biggest challenge was transitioning from me to a team. For years Buttondown was small enough to fit entirely in my head — every line of code, every customer, every decision.

Even today I struggle to understand what "the right kind of day" looks like for me, now that I've graduated past a lot of IC work.

Starting from a position of financial stability was the single most advantageous thing I did. I emphasize this because indie hacker mythology often erases it. I built Buttondown on top of a salary. That safety net let me make patient, long-term decisions instead of desperate ones, and patience turns out to be an enormous competitive advantage when everyone around you optimizes for a quick exit.

Though it sounds abstract, the mere passage of time (and comfort with it) works well for many channels! SEO, word of mouth — all these things become more valuable when you can easily wait a year.

Two pieces of advice:

  1. Build for a specific person — ideally yourself — and resist the urge to generalize before you have to. Every feature you add “for flexibility” is a feature you’ll maintain forever for a customer who may not exist. The narrowest useful product beats the broadest vague one.

  2. Take support seriously — not as a chore, but as the product. The fastest way to earn a customer for life is to answer their email like a human who cares, quickly, and fix their problem. It doesn’t scale, everyone will tell you, and they’re right. That’s why doing it anyway is such an advantage.

For a long time, my goal with Buttondown focused on avoiding failure: "I want to get my first paying customer to confirm it's a real product"; "I want to hit a thousand dollars in revenue to ensure it's not just friends humoring me"; "I want to make $10k/mo, otherwise I can't work on it full-time"; and so on.

Now, those milestones no longer apply: it's profitable enough to support my salary and others' salaries; it grows every month.

Currently, my goal is this: I want Buttondown to grow and flourish specifically to validate and proselytize a slightly different model of software company: one that uses all the amazing things about software — e.g. negligible marginal costs and the infinite breadth of the internet — to build high-value, sustainable tools for customers while being fair and rewarding to employees.

You can follow me on Twitter and my personal website. Or learn more at buttondown.com!

Indie Hackers Newsletter: Subscribe to get the latest stories, trends, and insights for indie hackers in your inbox 3x/week.

Support This Post

Leave a Comment

  1. 1
    The "why indie hackers should keep their day jobs" section hit close to home — I just got my first Shopify app through app review this week, built entirely on evenings/weekends while working full-time. The patience point resonates: no pressure to force monetization decisions early means I can actually wait to see if there's real signal before optimizing anything. Curious how you personally decided you'd built "enough" of the first version before charging that first $5 — was there a moment you knew it was ready, or did you just ship and see?
  2. 1
    The part about building the first version for yourself really stood out. A tiny product that solves a real problem for one person feels like a much better starting point than trying to build something for everyone from day one. I also liked the point about support becoming a marketing channel. It is easy to focus on acquisition and forget that a genuinely good experience can create word of mouth over time.
  3. 1
    The day job point is underrated. Having no pressure to monetize every decision gives you room to build the boring stuff properly and let distribution catch up.
  4. 1
    That's amazing
  5. 1
    A long-game approach works especially well for practical tools that solve a specific problem. Rather than chasing every trend, a side project can build trust by consistently improving one core experience and addressing real user needs. For example, Fix My Speaker focuses on a simple browser-based solution for removing water and dust from speaker grilles. Small improvements, useful content, and clear explanations can compound over time. The key is staying focused on the problem, listening to users, and building something people are comfortable returning to and recommending.
  6. 1
    This is a great breakdown. The part about learning from early users is especially useful. It’s easy to overbuild before getting enough real feedback.
  7. 1
    The “long game” part really resonates. It’s easy to focus on quick growth, especially in a crowded market, but consistently improving a product over several years seems to be a very different game. Curious how you decided which opportunities to pursue and which ones to ignore along the way.
  8. 1
    @James Fleischmann Really interesting story. I like the idea of starting with a very small product and focusing on solving one specific problem before adding more features. The point about patience also stood out to me—building through steady customer feedback, support, and word of mouth seems much more sustainable than relying on one big launch. The emphasis on keeping a day job while validating the idea is also a practical lesson for side-project founders.
  9. 1
    James Fleischmann Really interesting story. I like the idea of starting with a very small product and focusing on solving one specific problem before adding more features. The point about patience also stood out to me—building through steady customer feedback, support, and word of mouth seems much more sustainable than relying on one big launch. The emphasis on keeping a day job while validating the idea is also a practical lesson for side-project founders.Fonte de Letras
  10. 1
    Valuable pieces of advice here at the end. Appreciate you sharing Justin.
  11. 3
    This resonates in an uncomfortable way. I've gone the opposite direction from "build for one specific person" — a handful of narrow, properly-priced B2B tools, built solo, each one genuinely solving something real. What I underinvested in wasn't the build quality or the pricing discipline, it was picking one and staying with it long enough for word-of-mouth to actually compound. Four narrow things just gets you four separate "nobody's found this yet" problems instead of one thing with years of patience behind it. Rereading this, the "long game" isn't really about waiting it out — it's about only having the discipline to play one game at a time.
    1. 1
      feel this for sure!! very torn between sticking with my current build or moving on to the next shiny niche thing
  12. 3
    The narrowest useful product advice is the one that is hardest to follow in practice. We built an SEO audit tool that does one thing: crawl up to 2,000 pages against 100+ ranking factors, free, no signup. Narrow by any definition. The product works. Four people a month find it. What Justin had that most solo founders do not is the credibility to get those first conversations started. Stripe and Amazon on a resume are distribution in themselves. The Buttondown origin story, built for myself and solved my own problem, is clean, but the full version includes "and I had a network of senior engineers who would try anything I shipped." His second piece of advice about support is the one people skip. The support conversations are where you learn whether your narrow product is narrow in the right dimension or just narrow.
  13. 1
    The support as marketing idea is one I have been living accidentally. I am building a travel planning app and currently using it on a 100 day Southeast Asia sabbatical. A user flagged a bug yesterday, I fixed it within an hour and told them it was resolved. That conversation probably did more for trust than anything I have written about the product. The LLM acquisition note is quietly the most interesting thing in this whole piece. Nobody talks about it but it is real.
  14. 1
    very informative
  15. 1
    Really enjoyed this case study. The biggest takeaway for me was that consistency can be a real competitive advantage. Starting with a simple product, listening to customers, and improving it over time seems much more sustainable than trying to launch with every feature at once. The point about customer support being part of the product was especially valuable.
  16. 1
    "The constraint was secretly a gift. When you only have a few hours a week you can't afford to build anything speculative" - this line hits hard I love the transparency and how you expose the moment when someone you didn't know paid for the first time. Indeed this can change the perspective on what you're building. Your poin about constrains preventing speculative building is so true. It's exactly why i've been focusing on data-driven validation lately with a platforma I'm building called IdeaCrawl, trying to help founders find actual market gaps befor commiting their scarce nights and weekends. Great job and your journey really encourage a lot of people to keep going.
  17. 1
    Thanks for the post, informative
  18. 1
    Really enjoyed this story. One thing that stood out to me is the idea of building for a specific person instead of trying to create a product for everyone. I think many indie hackers (myself included) often start with the building part because it feels productive. But the harder question is usually: “Are we solving a problem that someone already cares about?” I’ve been exploring this problem while building Ainexa — an AI tool that helps indie hackers validate product ideas before spending weeks building. The biggest lesson so far has been that validation is not a one-time step. It’s an ongoing conversation with users, competitors, and the market. I’m still early in the journey, but I’m trying to apply the same principle: solve a specific problem first, then expand based on real feedback. Shared the project here: https://smollaunch.com/products/ainexa Thanks for sharing the Buttondown journey. The long-term, bootstrapped approach is a great reminder that distribution and trust compound over time.
  19. 1
    The part about limited time being a constraint really stood out to me. When you only have a few hours available each week, it becomes much harder to justify features that don't solve an immediate problem. That constraint can actually make product development more disciplined because every feature competes directly with customer support, fixing existing problems, and learning from users. I also like the distinction between building something narrow and keeping it narrow forever. A small initial product can be focused, while customer conversations reveal which adjacent problems are actually worth adding later. The support point is probably the strongest part for me. Support isn't just a service function; those conversations can become some of the best product research you get.
  20. 1
    Really enjoyed this breakdown, especially the idea that the “long game” is less about waiting and more about consistently solving one specific problem well. The combination of starting small, listening closely to customers, investing in support, and letting SEO and word-of-mouth compound over time is a great reminder that sustainable growth rarely happens overnight. Curious to know which of these strategies made the biggest difference once Buttondown started scaling.
  21. 1
    Really interesting!
  22. 1
    That's a pretty informative post; I'll keep that in mind.
  23. 1
    Makes sense. Are you planning to charge for it, or keep it free for now?
  24. 1
    The point about starting from financial stability really resonates. I'm building my platform while running other businesses, and that stability is exactly what lets me say no to shortcuts — no rushed pricing, no paying for visibility that doesn't convert, no desperate decisions. Patience as a competitive advantage is underrated. Also fully agree on support being part of the product: in local businesses, answering fast IS the brand. Congrats on Buttondown!
  25. 1
    feel this piece so deeply on multiple fronts! in the crowded ai video editing space, but hoping 🤞🏻... gambling 🎰? everyone else is taking the wrong bet.
  26. 1
    “I like the practical side of this. Which part of the process took the most time to figure out?”
    1. 1
      The payment architecture, by far. Getting the flow right — customer pays the business, platform takes its fee, ambassador gets their commission only after the business validates the real consumption — took longer than everything else combined. Stripe Connect handles the rails, but designing when money moves (and when it must NOT move) is where the real thinking went. Everything else — listings, directories, even building the product screens — was faster than I expected.
  27. 1
    “This is a really interesting approach. What was the biggest challenge you faced when you first started?”
  28. 1
    the long game thing is real, especially when you can't tell at first if a market's actually crowded or if everyone in it is just doing a mediocre job. I'm in a "crowded" space too and honestly most of what's already out there is generic templates or vague marketing copy that doesn't solve the real problem - so it ends up feeling less like squeezing into a saturated space and more like there's room because nobody bothered to actually be good at it
  29. 1
    Thanks for entire story. really learned many strategies.
  30. 1
    Really enjoyed this story, especially the point about playing the long game with SEO and word of mouth. I’m working on my own side project, OgraPrices.com, focused on providing updated fuel price information in Pakistan. One thing I’ve learned is that building useful content consistently and being patient with SEO can take time, but it can create long-term value. The idea of starting small, solving a real problem, and improving the product over time really resonates with me. Thanks for sharing the journey — very motivating for indie hackers building alongside a full-time job.
  31. 1
    Honestly, I found this story really inspiring. I especially liked Justin’s approach of building a simple product around a real problem instead of adding unnecessary features. His thoughts on keeping a day job and taking customer support seriously really stood out. It’s a great reminder that patience and consistency can compound.
  32. 1
    This hit at the right time lol. I'm early into my own project and constantly fighting the urge to rush things. Good to see the long game actually pay off for someone. Appreciate you being real about the numbers instead of just the highlight reel.
  33. 1
    The perspective to scale and create a community is great, that’s what brings in the trust and credibility for a creator!
  34. 1
    یہ ایک professional اور natural English comment ہے جو Indie Hackers پر اچھا لگے گا: > Really inspiring journey! I especially liked the focus on building a respectful product and playing the long game. Turning a side project into a profitable business while staying bootstrapped is a great achievement. Thanks for sharing the lessons and strategies behind the growth! 👏
  35. 1
    Super! Thanks
  36. 1
    This resonates in an uncomfortable way. I've gone the opposite direction from "build for one specific person" — a handful of narrow, properly-priced B2B tools, built solo, each one genuinely solving something real. What I underinvested in wasn't the build quality or the pricing discipline, it was picking one and staying with it long enough for word-of-mouth to actually compound. Four narrow things just gets you four separate "nobody's found this yet" problems instead of one thing with years of patience behind it. Rereading this, the "long game" isn't really about waiting it out — it's about only having the discipline to play one game at a time.
  37. 1
    This hits a little too close to home. I took almost the opposite approach to “build for one specific person.” Instead, I built a few small, focused B2B products — each with a clear use case, sensible pricing, and a real problem behind it. The problem wasn’t that I was building bad products. And it wasn’t that I didn’t understand pricing. The bigger mistake was splitting my attention. Every time one product started taking shape, there was another idea waiting for my attention. So instead of giving one product years to build trust, referrals, and word-of-mouth, I ended up with several products all waiting for their first real wave of momentum. And that changes how I think about the “long game.” It’s not simply about being patient. It’s about having the discipline to stay focused on **one game long enough for patience to actually compound.**
  38. 1
    I like this.
  39. 1
    Solving your own problem and then building business around is is so inspiring
  40. 1
    i like it this talk so very helpfull for me
  41. 1
    Loved everything about your story. It got me thinking about a lot of things!
  42. 1
    Really liked the point about letting the product grow slowly while keeping the day job. One thing I’m curious about: where did the first 10–50 paying customers actually come from, before word of mouth had enough momentum to compound? Was it mostly people finding your writing, communities you were active in, or just organic discovery?
  43. 1
    Building for a specific person 'ideally yourself' is the advice I most relate to here. I recently built a Python tool to handle a repetitive task in my stamp selling workflow. It separates and straightens multiple stamps from a scanner image. As a user, I knew exactly what I wanted the tool to do and could judge whether it worked. It reduced a 10–15 minute manual job to less than 20 seconds. Only after using the tool myself I had a kind of Eureka moment! I adapted it for others to use on the web. This experience reinforced the value of resisting generalisation. Its narrow operating constraints help it perform its intended job reliably.
  44. 1
    This resonates in an uncomfortable way. I've gone the opposite direction from "build for one specific person" — a handful of narrow, properly-priced B2B tools, built solo, each one genuinely solving something real. What I underinvested in wasn't the build quality or the pricing discipline, it was picking one and staying with it long enough for word-of-mouth to actually compound. Four narrow things just gets you four separate "nobody's found this yet" problems instead of one thing with years of patience behind it. Rereading this, the "long game" isn't really about waiting it out — it's about only having the discipline to play one game at a time.
  45. 1
    The point about time becoming a competitive advantage really resonates with me. I’ve been running Black Friday France as a side project since 2013, and a lot of the value has come from simply staying in the game long enough for SEO, relationships and accumulated knowledge to compound. It’s even more noticeable with a highly seasonal business: every year you improve something, then wait months to really see the result during the next peak. I also like the idea that keeping a day job can actually enable better long-term decisions rather than being something you need to “escape” from. Curious whether there was a specific point where Justin felt the compounding effect really started becoming visible?
  46. 1
    I have so much admiration for what you've build with Buttondown and most of all *how* you've done it, Justin. Very much a role model for what we're trying to build with Helo. I couldn't agree more with your point about treating great, human support as a priority, even if it doesn't scale. So many companies have decided that a mediocre AI chatbot is "good enough" because it's fast and cheap. Having a direct line to a real person who actually cares is a rare thing these days, and customers notice.
  47. 1
    The "under-pricing doesn't make you generous, it makes you fragile" line is one I wish every bootstrapper would tattoo backwards on their forehead so they see it in the mirror every morning. I've made exactly this mistake — kept our pricing low out of imposter syndrome more than strategy, then wondered why the business couldn't support the features customers were asking for. Your point about support being marketing disguised as a cost center maps to something I've noticed running a technical SEO tool: the support conversations where I learn the most about what to build next are the ones that feel least like support. They're just someone describing their actual workflow, and the gaps write the roadmap for you. The "Claude loves us" LLM acquisition note is fascinating too. Are you seeing that in referral data, or more anecdotally from customers mentioning it?
  48. 1
    Great information how many years of experience do you have
  49. 1
    The bit that stands out to me is how much of this worked because the product had time to compound. Keeping the day job sounds less romantic, but it let Buttondown avoid desperate decisions: underbuilding instead of overbuilding, answering support properly, letting word of mouth and trust take their time. That feels especially relevant in a crowded market, where the temptation is usually to shout louder or add more features. Also, “support is the product” is a strong line. Plenty of small tools can’t outspend incumbents, but they can absolutely out-care them. That still seems underrated.