Free estimate generator
This free estimate generator turns your project details into a priced estimate you can send before the proposal: line items at your rates, an optional contingency line for the unknowns, and a valid-until date so the number cannot be quoted back at you next year. It is built to be honest — the document calls itself an estimate, states its assumptions underneath, and says plainly that it is not a fixed quote.
Estimate details
Line items
Order of maths: discount first, then contingency on what remains, tax last — each shown as its own line in the preview.
| Description | Qty | Rate | Amount |
|---|
| Subtotal | $0.00 |
| Discount | −$0.00 |
| Contingency (10%) | $0.00 |
| Tax | $0.00 |
| Estimated total | $0.00 |
Printing uses your browser’s print dialog — choose “Save as PDF” there if you want a file. Only the estimate above prints, not the whole page.
Three documents, three different promises
Clients use these words interchangeably; the documents do not mean the same thing, and sending the wrong one costs you either the job or the margin.
| Document | What it promises | When you send it |
|---|---|---|
| Estimate | A careful approximation based on stated assumptions. The price can move if the facts move. | Early — while the scope is still being defined and the client needs a number to plan around. |
| Quote / proposal | A fixed price for an agreed scope, usually valid for a set period. | Once the scope is agreed and you are ready to be held to the number. |
| Invoice | A demand for payment for work already done, or a deposit already agreed. | After delivery, or at the milestones the proposal set. |
The WorkKitly chain follows that order. First set the rate your hours must carry with the freelance hourly rate calculator, then price this job here, line by line. When the client says yes, turn the estimate into a commitment with the proposal generator — same scope, firmer promise. The invoice comes last, when the work exists. Skipping the estimate and going straight to a fixed quote is how a vague brief becomes a fixed loss.
Once the client accepts the number, turn the assumptions underneath it into a boundary with a scope of work — the deliverables, the exclusions and the change-request rule in one document both sides can point to when the brief starts to grow.
How to build an estimate that does not trap you
- Think in ranges, send the likely case. In your head every job has a best case, a likely case and a bad case. The estimate you send is the likely case, priced line by line; contingency covers part of the gap to the bad case. If a job only makes money at its best case, it does not make money.
- Write the assumptions down. Every estimate is true only under conditions: content arrives on time, two revision rounds, the client’s data is exportable. Printed under the numbers — as the default notes here do — those conditions protect you. Left unsaid, they become arguments you have already lost.
- Always set an expiry date. Costs, availability and your own rate all change. The valid-until date (30 days by default in this tool) stops an old estimate being accepted next year at last year’s prices, and gives the client a gentle, honest reason to decide now.
- Keep contingency honest and visible. Contingency is not a secret markup — it is the price of named uncertainty, shown as its own line where the client can see and question it. If the unknowns never happen, you can hand it back, and clients remember the freelancer who did.
- Re-estimate when the scope moves. An extra page, another integration, a new stakeholder’s revision round — each changes the facts the estimate stood on. Price the change and get it agreed in writing before doing the work, not in an invoice after it.