In this post I’ll walk through my experience with each of these tools, covering:
- How they work, and important differentiating features
- Pricing, tokens, and how far you can get on a free plan (I paid for 2/4)
- How good (or bad) they are at fixing bugs
Throughout I’ll be using a very serious, very real set of prompts. As Art Vandelay, owner and CEO of Vandelay Industries, my team needs an internal dashboard to handle the importing and exporting of potato chips to the United States.
Here’s the prompt I started each tool out with:
I am the CEO of Vandelay Industries, a global firm that handles the importing and exporting of potato chips to the United States. I need to build an app for managing the internal operations of my business. The app should have 3 main views:
1) An inventory manager / CRM of all of our shipments of potato chips. This should be a table view backed by a database with columns for things like each shipment's potato chip brand, size, monetary value, and who and where it is being shipped to
2) Analytics and charts on our shipments: top shippers, top brands, volume for this month, things like that
3) A map of current shipments and where they are located
From there I inspected each app and went through each bug one by one, prompting the model to fix it.
Replit
Replit was the most feature rich, felt the best thought out, and overall created the best and most polished finished app of all of the tools I tested. But it also took by far the longest, frequently set itself into doop loops, wasted tokens on nonsensical testing that didn’t work, and there’s no way to publish your app without paying.
Replit stat sheet
Initial prompting and planning
When you prompt Replit Agent it starts by generating a plan. In most vibe coding tools you can either toggle on planning mode, or the tool automatically defaults to it.
Another unique feature among the vibe coding tools I evaluated was this choice Replit gave me before building anything:
This brings me to my first main point, which is that despite building essentially an identical UI to the other vibe coding tools I tried, Replit took a really long time to build it: about 15 minutes or so. My sense is a lot of this time was wasted on the model getting confused, adding and then removing things, and unnecessary testing.
It’s extremely trippy watching a model create a codebase from scratch; it’s eerily similar to a human, trying stuff and getting errors, then fixing those errors and starting the whole thing over again.
Pricing structure
Towards the end of the app build, I got paywalled:
Replit’s pricing isn’t credit based, and instead calculates a cost per prompt based on how long the prompt took to resolve. For every prompt you will get a breakdown of how long it took, how many actions were done, and then how much your agent usage cost.
Here you’ll notice that 75% of my costs were for something called “Automated UI Testing” – this is one of the worst features in Replit by a mile and is unfortunately enabled by default. It essentially tries to automatically test your app using some sort of emulated browser:
The problem is that it doesn’t really work, takes orders of magnitude more time than your actual app building prompts, and ends up costing you extra money at phases where you didn’t even need testing. And it’s enabled by default, which it really shouldn’t be.
Overall the app cost about $6 for the initial build, and subsequent smaller bug fixes were usually $0.50 or less.
Final app
Anyway here’s what the final app looked like:
Despite the fact that I didn’t really specify a lot of functionality on this page, Replit was smart enough to add a lot of it for me: sortable columns, the ability to add a new shipment, the ability to edit and delete a shipment, etc.
The app started without any data, so I needed to prompt Replit to make a fake dataset and it did a good job:
The app has no data. Can you generate a mock dataset of potato chip shipments that matches the schema of the database?
The initial app was pretty good but had some bugs that needed fixing. For example, the sorting on the “destination” column didn’t work, so I prompted the model to fix it and it did correctly the first time.
Integrations
Like I said above, I believe (and you will see that) the initial app building phase in vibe coding is largely commoditized across tools. What made the Replit experience good for me was all of the other stuff. For example, their UI for editing the data in the database:
The Replit UI is built modularly via different tabs. The first tab has the preview of the app, and when you open a new one you can choose from all different sorts of “features” for lack of a better word:
To my knowledge this is far and away the most comprehensive suite of features for a vibe coding tool; but at the same time, probably overkill and too technical for the typical end user.
Publishing and deployment
Replit prices publishing like a cloud provider, and there is no free option for deployment. To publish you choose a machine configuration in the cloud, plus whether you want autoscaling and things like that. Again, to the typical non-developer, I’m not sure they’ll be able to accurately decide how many CPUs and GBs of RAM they’ll need.
If I had to personify the Replit Agent, it feels like that zany engineer friend of yours who chaotically works all night, zigging and zagging to build something, but somehow the final product is actually amazing.
v0
I think of v0 as the best vibe coding tool if you’re someone who can actually code. It tries to strike a very different balance between ease of use and customization, and leans heavily towards the latter. It also has the smoothest, fastest, and most accessible publishing / deployment flow of any of these tools. It’s from the team at Vercel so this does not surprise me in the least.
v0 stat sheet
Initial prompting and planning
Like Lovable, v0 was off to the races after I gave it the signature Vandelay Industries prompt. The only thing it asked was if I wanted to integrate with Supabase, their default database provider (to which I answered, yes, of course my dear). I’ll talk more about this Supabase integration, and why you might prefer this to how Lovable and Replit do theirs, in a bit.
The Supabase install ran into a brief hiccup and I needed to re-select my newly created database from the dropdown, instead of the model proceeding automatically once I completed the signup.
v0 built the whole app in about 4 minutes, and like Replit, it smartly intuited that it should build the ability to add, edit, and remove shipments. I ran into some overflow issues with the charts on the analytics page, and it took a couple of prompts before the model was able to fix it.
Though it didn’t automatically use it off the bat, v0 does have a planning mode, and you can also tell v0 to plan explicitly in your prompt. Otherwise the feature is hidden in one of the toggles in the prompt box:
Pricing structure
v0’s pricing is pretty straightforward – there’s a free plan where you get $5 in credits every month, a $20/mo premium plan where you get $20 in credits a month, a $30/user/mo team plan where you get $30 in credits a month, and then above that, business and enterprise plans that have different credit schemes. You can also buy any amount of credits on top of what you get from your monthly plan.
Building my app and subsequent fixes took <2 credits, so I was able to build the whole thing for free.
Final app
The final app looked a lot like the others, save for the navigation being on top instead of the side, and a curious use of emoji.
v0 also added sample data without me needing to prompt it.
Integrations
I mentioned earlier that v0 doesn’t have a built-in database, and instead defaults to a Supabase integration that requires you to create an external account there. It’s only a few extra clicks, but you do need to choose a configuration for your Supabase database (there are both free and paid options).
At surface level you might assume Replit’s and Lovable’s approach – building a database natively – is simply easier and better. But this is not entirely true. Like I said in the intro, v0 is engineer-leaning and prioritizes flexibility and customization over pure ease of use. The ability to choose which database you want to use – both in terms of the database itself, and in terms of the power, size, and configuration of that database – is important for a lot of people (like yours truly).
So if you want to use a different database – like let’s say Neon, or Redis, or even Vercel’s Blob storage, they have native integrations where you can do that in a few clicks. v0 also has few-click integrations for other things like Grok (and unrelated, Groq), fal, Stripe, etc.
Publishing and deployment
This is another area where v0 shines. Vercel made a name for themselves by making it as easy as humanly possible to deploy your app, and that’s exactly what you get with v0.
When you click publish, your v0 app automatically becomes a full-fledged Vercel project; you get all of the advanced features you’d get if you had built your app manually like automatic deploys, detailed logging, analytics, etc.
Lovable
Lovable was a lot smoother, faster on the initial build, and easier to use than Replit; I was also able to create and iterate on my entire app for free. But the final product was significantly less polished, there were glaring security issues (entirely Lovable’s fault), and the platform overall felt way less…mature?... than others I tested.
Lovable stat sheet
Initial prompting and planning
Like Replit, I asked Lovable to build a dashboard for Vandelay Industries. Unlike Replit, it kind of just started doing it without asking me for any preferences or planning or anything. The only thing I was prompted back was whether I wanted to to use Lovable Cloud, which is their out of the box backend (I said yes):
Lovable frames all of their backend services – database, authentication, and models – as a single “Cloud” product, whereas for Replit, each one of these is an individual add-on and treated as a separate product.
Within a few minutes I had my app, but the V1 was a lot less polished than Replit. One glaring example: Lovable used the wrong font color for the sidebar, so there was no way to see how to navigate between the shipments panel, the analytics panel, and the map panel.
I asked Lovable to fix it, and it took two prompts: the first time it thought it had fixed it, but it hadn’t. During the second prompt it got stuck in some sort of doom loop that required me to reload the page and start the prompt over. Also, the “map” that Lovable generated is, by most definitions I can gather, not a map:
I think of Lovable as vibe coding with guardrails. It’s a significantly simpler platform with more things taken care of for you, less detail given to you, and an overall more plushy, daycare-like feel. That’s nice if you’re building something simple, but less nice if you’re more technical or have more complex needs.
Pricing structure
I was able to build this whole app for free, which is nice…but looking into Lovable’s actual pricing left me with more questions than answers. Consider the Pro Plan, their cheapest:
So you start with 100 credits every month. But then you also get 5 credits every day, which can accumulate to up to 150/month; but is that including the 100 every month? Then there’s a completely different billing system for Cloud, their backend package, where you get up to $25 in “usage” (not credits?) every month. But, this usage deal only lasts until the end of 2025, then it’s going to be…something else. Credits can also roll over, but only on the cadence of your plan, so if you’re monthly, they only roll over for 1 month.
And what is a credit exactly? Well that completely depends. Lovable’s pricing page says there are two modes – default, and chat – and each burn credits differently. But wait, as of July 2025, agent is now the default mode, which replaces legacy mode. We are now up to 4 different modes, are you keeping track?
I want whatever this pricing team is smoking.
Final app
The final app ended up looking pretty similar to all of the other vibe coding tools. Almost like they’re using the same models under the hood…
Unlike Replit, Lovable did not intuit any features on top of what I explicitly asked for. So on this shipments page, there’s no way to edit, add, or remove data.
The analytics aren’t exactly useful, but then again, all of this data is fake…speaking of which, Lovable was the first vibe coding tool I used that automatically generated a fake dataset to populate the app with. I thought this was pretty clutch and it was nice to avoid having to prompt the model to do that.
Integrations
Like I mentioned earlier, Lovable bundles all of the usual backend pieces you’d need into one product they call Cloud. Cloud has its own pricing and usage mechanism, distinct from the credits system used for the actual vibe coding. There’s also a “native Supabase integration” but it’s unclear what relationship this has with Lovable’s own Lovable Cloud. And perhaps to only my own disappointment, there’s no smooth UI for editing the data in the database like Replit had.
Then there are a lot of other integrations: they’ve got Stripe, GitHub, etc.. “Integration” means different things for different vibe coding tools. Which brings me to Lovable’s security advisor. This thing – a valiant effort, for sure – attempts to scan your app and tell you if it has any vulnerabilities. And it actually works pretty well. For example, it scanned my app and noted that my database – yes, the one that I trusted Lovable to set up for me – had no security measures whatsoever and any hacker could log in and mess with my data:
On the one hand this is great, because most non-technical people vibe coding would have no clue that this is a problem. On the other hand it’s not great, because LOVABLE IS THE ONE WHO BUILT THIS APP IN THE FIRST PLACE. If the model knows that it’s bad for a database to have no protections, why didn’t it build the app correctly the first time around????
Publishing and deployment
Publishing your Lovable app doesn’t consume any credits in of itself, so if you were able to build your whole app for free like me, you can also publish it to the world.
Bolt
Bolt occupies a medium somewhere in between Replit and Lovable. It follows the “plan first, build second” philosophy (like Replit), but wasn’t very good at following its own plans. Pricing is token based and very opaque and confusing. Overall, it felt like their model was decent at doing what you asked, but would then create some sort of side effect that you didn’t want.
Bolt stat sheet
Initial prompting and planning
The Bolt prompt box on the site has a “plan” toggle that lets you have the model plan your app first, and you then review that plan, instead of going straight to implementation. For larger builds I would highly recommend always utilizing some sort of planning, for whatever reason models perform a lot better with a two step process like this.
This is what a generated plan looks like:
The model attempts to add detail to my pretty vague prompt, sketching out an initial requirements document. And from there you can tell it which functionality matters to you and which doesn’t (for example, I don’t have access to shipment location data).
There’s also a dropdown for choosing different models – which at first was exciting – but then I realized that you…don’t really have a choice.
Once you’re satisfied with the plan the model generated, you can click the “implement for me” button – although that button never showed up for me and I needed to manually prompt the model to implement the plan (fine). There’s a nice dedicated UI for showing the model’s progress through the plan:
All of this sounds really nice, and it would have been, except that Bolt didn’t actually follow its own plan. For example, in the plan the model put together, it specified:
3. Inventory Manager and CRM Table View
- Build interactive data table with sortable columns for all shipment fields
- Implement search and filter functionality across multiple columns
- Add pagination for handling large datasets efficiently
- Create modal forms for adding new shipments with validation
- Enable inline editing for updating existing shipment records
- Add bulk actions for managing multiple shipments at once
- Include export functionality to download shipment data as CSV
Hm yes, sortable columns, a modal for adding new shipments, inline editing, very nice, very nice. It didn’t build any of that, it just gave me a read-only table:
It took another cycle of prompting, planning, and implementing to add those features. Which is fine, but like, if you’re going to make a plan, stick to the plan the first time.
Then there was the analytics dashboard, which essentially made no sense:
For each of these nonsense charts, I needed to prompt the model to fix them. And then there’s the map. The map was no fun.
I shit you not, it took 5 cycles of prompting back and forth to try to fix this thing, and eventually I gave up because it seemed like it wasn’t in the cards.
Pricing structure
Bolt’s pricing is not straightforward. They are the only vibe coding tool in this post that charges by tokens instead of credits or some generic dollar value. For $25/mo you get 10 Million tokens every month, and unused tokens roll over to the next month (but not further than that). So what is a token exactly?
Great question. Bolt’s answer is essentially that we can’t really know for sure.
(Lucky for you, we’ve already written about what tokens are and how they work)
OK, so tokens are hard to explain, fine. But at least it’s easy to see how many tokens your work in the Bolt app is costing, right? Also no. Unlike all of the other vibe coding tools in this post, there is no way to know how much your prompts and responses in Bolt cost, even in terms of tokens. The expectation is that you prompt away and periodically check your account’s token balance, I guess?
Final app
The final app, after the planning fiasco and subsequent work required to compress the many columns into a layout that fits on one screen, looks pretty good:
Integrations
Bolt, like Replit and Lovable, has a native database. There’s a nice, if a bit primitive, UI for viewing and editing the data in your database:
Like Lovable, use of the database is priced separately from use of the model. And adding to the pricing confusion, the database is priced in relation to compute use, so you get a specific size of VM and hours of compute based on the plan you’re on.
Outside of their native database (and authentication) Bolt’s integrations ecosystem is less developed than others in this post – there is essentially just Stripe as far as your actual app is concerned (the rest deal with hosting).
Publishing and deployment
You can publish your Bolt app for free and they will support up to 333k web requests; if you upgrade to the $25/mo plan you get 1M web requests. Is this number actually enforced? I’m not sure.
To summarize, of the vibe coding tools I tried:
- Replit was the most feature rich, well thought out, and powerful
- v0 was the best if you’re already a developer and want a technical interface
- Lovable and Bolt were pretty much objectively worse than the other two
If I were starting a new project from scratch I’d use Replit or v0, and spend more time paying attention to how to plan well instead of just having the model go off and do what it thinks is best.
Pricing models vary wildly across tools, as well as how far you can get without paying and what it costs (if it costs) to deploy your finished app. Overall, for an app of low/medium complexity like mine, expect to pay ~$10-$15 to get a decent finished product that you’ve had some time to iterate on.