Plans are sold in gigabytes. Your data comes in patients, participants, matters, clients and documents. This page converts one into the other for Australian software teams, practices and firms, sector by sector, using a row size measured on our own production database, and shows the arithmetic so you can check it.
A narrow, indexed row costs about 600 bytes all-in, indexes included. We measured that on WattleDB’s own production tables on 21 September 2026. A row that carries text costs about 600 bytes plus one byte per character, so a record with a 1,500-character note is about 2,100 bytes. One GiB is 1,073,741,824 bytes, which holds about 1.8 million of the narrow rows or about 510,000 of the rows with a note.
Two things come off the allowance before your data does. An empty database already uses about 16 MB (15.8 MiB) for PostgreSQL’s catalogue and the extensions we install. And PostgreSQL needs working room for housekeeping, so plan to fill about 80% of the allowance, not all of it. That gives the figure every table on this page uses:
| Plan | Database allowance | Usable for planning | Object storage |
|---|---|---|---|
| Free | 512 MiB | about 394 MiB | 512 MiB |
| Hobby | 1 GiB | about 803 MiB | 2 GiB |
| Launch | 4 GiB | about 3.2 GiB (3,261 MiB) | 5 GiB |
| Scale | 10 GiB | about 8.0 GiB (8,176 MiB) | 10 GiB |
Usable = 80% of the allowance, less the 15.8 MiB an empty database uses. Hobby: 80% of 1,024 MiB is 819.2 MiB, less 15.8 MiB is 803.4 MiB. Allowances are per database and are binary units (1 MiB = 1,048,576 bytes, 1 GiB = 1,073,741,824 bytes); the pricing page writes them as MB and GB. Free is one database per workspace and pauses after seven idle days, so it suits development rather than a live app. Every figure below is typical, and yours will differ with your schema.
Storage is one input. For clinical or participant records, choose the plan for its backups, recovery window and per-person access first. Hobby and Launch can restore the database to any point in the last 7 days and Scale the last 30; Hobby is one person per workspace, while Launch and Scale let you share with up to 5 and 20 people. The pricing page has the detail.
Most SaaS tables are narrow. What fills a SaaS database is usually the event or audit table, because it gains a row every time anyone does anything.
| Record | Typical size | Per GiB | Free | Hobby | Launch | Scale |
|---|---|---|---|---|---|---|
| User accountname, email, role and a few settings; a primary key and a unique index on email | 600 bytes | 1.8 million | 690,000 | 1.4 million | 5.7 million | 14 million |
| Business customername, ABN, address and about 400 characters of notes | 1,000 bytes | 1.1 million | 410,000 | 840,000 | 3.4 million | 8.6 million |
| Audit or event rowwho did what and when, with a JSON detail of about 400 characters | 1,000 bytes | 1.1 million | 410,000 | 840,000 | 3.4 million | 8.6 million |
| Orderan order row plus three line-item rows, each about 600 bytes | 2,400 bytes | 450,000 | 170,000 | 350,000 | 1.4 million | 3.6 million |
Worked example. A booking product with 200 business customers and 20,000 users (about 12 MiB), taking 150,000 bookings a year (about 86 MiB) and writing a million audit events a year (about 950 MiB), grows by about 1,040 MiB a year. That is past Hobby inside the first year. Launch holds about 3 years of it and Scale about 8. The audit trail is about 92% of the growth: keep 12 months of it in the database and archive the rest, and Launch holds more than 25 years at this rate.
For the privacy law that applies to SaaS teams and what you still have to do yourself, see Industries: SaaS builders & SMBs.
An agency usually runs one database per client. Each client’s data is small; the thing to count is how many databases you run.
| Record | Typical size | Per GiB | Free | Hobby | Launch | Scale |
|---|---|---|---|---|---|---|
| Client contactname, email, phone, company and a note of about 200 characters | 800 bytes | 1.3 million | 520,000 | 1.1 million | 4.3 million | 11 million |
| Booking or jobdate, time, status and who it is for | 600 bytes | 1.8 million | 690,000 | 1.4 million | 5.7 million | 14 million |
| Web enquirya form submission with a message of about 1,000 characters | 1,600 bytes | 670,000 | 260,000 | 530,000 | 2.1 million | 5.4 million |
| Content pagea CMS page or block of about 3,000 characters | 3,600 bytes | 300,000 | 110,000 | 230,000 | 950,000 | 2.4 million |
Worked example. An agency hosting 12 client apps, each with 2,000 contacts (about 1.5 MiB) and taking 5,000 bookings and 1,000 enquiries a year (about 4.4 MiB a year), will not run out of room on Hobby in any timeframe that matters: each client database has space for decades. What adds up is the baseline. Every database carries its own 16 MB of catalogue and extensions, so 12 client databases use about 190 MiB before any client data. Choose each client’s plan for always-on running, connections and backups, not for storage.
For who the customer of record is and what you pass on to clients, see Industries: Agencies & freelancers.
Participant and resident profiles are a rounding error. Progress notes are the bulk, because one is written for every shift or every resident on every shift.
| Record | Typical size | Per GiB | Free | Hobby | Launch | Scale |
|---|---|---|---|---|---|---|
| Participant or resident profiledemographics, contacts, plan and funding details, about 1,400 characters beyond the basics | 2,000 bytes | 540,000 | 210,000 | 420,000 | 1.7 million | 4.3 million |
| Service booking or rostered shiftwho, when, where, the support item and status | 600 bytes | 1.8 million | 690,000 | 1.4 million | 5.7 million | 14 million |
| Progress note (shift note)a note of about 1,500 characters | 2,100 bytes | 510,000 | 200,000 | 400,000 | 1.6 million | 4.1 million |
| Incident reportstructured fields plus about 3,000 characters of description | 3,600 bytes | 300,000 | 110,000 | 230,000 | 950,000 | 2.4 million |
| Medication administration entryresident, medicine, time given and who gave it | 600 bytes | 1.8 million | 690,000 | 1.4 million | 5.7 million | 14 million |
Worked example, NDIS. A provider with 150 participants delivering 400 shifts a week, each with a progress note, plus about 100 incident reports a year, grows by about 54 MiB a year: 20,800 shifts at 600 bytes (about 12 MiB), 20,800 notes at 2,100 bytes (about 42 MiB) and incidents under 1 MiB. On storage alone, Hobby holds it for about 15 years, but choose the plan for recovery and access first.
Worked example, residential aged care. A 90-bed home writing three progress notes per resident per day (98,550 a year, about 197 MiB) and about 16 medication entries per resident per day, since many residents take several regular medicines across several rounds (525,600 a year, about 301 MiB), grows by about 500 MiB a year. On storage alone, Hobby holds under 2 years, Launch about six and a half and Scale about 16.
For the practice and quality standards and what you still have to do yourself, see Industries: NDIS, aged care & community services.
Whether you store transaction lines decides almost everything. A practice tool that holds clients, jobs, time and workpapers is small. Software that keeps every bank line is not.
| Record | Typical size | Per GiB | Free | Hobby | Launch | Scale |
|---|---|---|---|---|---|---|
| Clientname, ABN, addresses, contacts and about 400 characters of notes | 1,000 bytes | 1.1 million | 410,000 | 840,000 | 3.4 million | 8.6 million |
| Ledger line or bank transactiondate, amount, account code, GST code and a short description | 600 bytes | 1.8 million | 690,000 | 1.4 million | 5.7 million | 14 million |
| BAS workpaperone quarter’s figures with about 1,000 characters of reviewer notes; attachments are files | 1,600 bytes | 670,000 | 260,000 | 530,000 | 2.1 million | 5.4 million |
| Time entrya narrative of about 200 characters | 800 bytes | 1.3 million | 520,000 | 1.1 million | 4.3 million | 11 million |
Worked example. A bookkeeping practice with 300 small-business clients whose bank feeds bring in about 2,500 transactions per client a year stores 750,000 ledger lines a year, about 430 MiB. With 1,200 BAS workpapers (about 2 MiB) and 6,000 time entries (about 5 MiB) it grows by about 436 MiB a year. Hobby holds under 2 years, Launch about seven and a half and Scale about 19. Leave the transaction lines out and the same practice grows by under 7 MiB a year, which fits Hobby for decades.
For the rules that apply to tax practitioners and where we are not the right fit, see Industries: Accounting & bookkeeping.
A law firm’s database is modest. Its documents are not, so for legal work the file allowance usually decides the plan.
| Record | Typical size | Per GiB | Free | Hobby | Launch | Scale |
|---|---|---|---|---|---|---|
| Matterparties, type, status, key dates and a summary of about 1,000 characters | 1,600 bytes | 670,000 | 260,000 | 530,000 | 2.1 million | 5.4 million |
| Contactname, role, email, phone and a short note | 800 bytes | 1.3 million | 520,000 | 1.1 million | 4.3 million | 11 million |
| Time entrya narrative of about 200 characters | 800 bytes | 1.3 million | 520,000 | 1.1 million | 4.3 million | 11 million |
| File notea note of about 1,500 characters | 2,100 bytes | 510,000 | 200,000 | 400,000 | 1.6 million | 4.1 million |
| Document recordtitle, type, date and storage path; the document itself is a file | 800 bytes | 1.3 million | 520,000 | 1.1 million | 4.3 million | 11 million |
Worked example. A 10-lawyer firm opening 600 matters a year, with 13,800 time entries (six a lawyer a day for 230 days), 1,800 file notes, 2,400 contacts and 24,000 document records, grows by about 35 MiB a year. Hobby holds the database with room for about 23 years. The documents are where the size is: 24,000 files at about 400 KiB each is about 9.2 GiB a year, so even Scale’s 10 GiB bucket holds about a year of them. Size files from the files table, and keep the firm’s master copies in its document management system.
For confidentiality duties and what we can say about access today, see Industries: Legal.
A patient’s demographics are one row. Their history is many: every appointment, note, prescription and result adds to it, so a practice’s database grows with its consults rather than its patient count.
| Record | Typical size | Per GiB | Free | Hobby | Launch | Scale |
|---|---|---|---|---|---|---|
| Patient demographicsname, date of birth, address, contacts, Medicare number and emergency contact, about 800 characters | 1,400 bytes | 770,000 | 290,000 | 600,000 | 2.4 million | 6.1 million |
| Appointmentpatient, practitioner, time, type and status | 600 bytes | 1.8 million | 690,000 | 1.4 million | 5.7 million | 14 million |
| Clinical note or encountera note of about 2,000 characters | 2,600 bytes | 410,000 | 160,000 | 320,000 | 1.3 million | 3.3 million |
| Prescriptionmedicine, strength, dose and about 200 characters of directions | 800 bytes | 1.3 million | 520,000 | 1.1 million | 4.3 million | 11 million |
| Resultone report with about 1,500 characters of text | 2,100 bytes | 510,000 | 200,000 | 400,000 | 1.6 million | 4.1 million |
| Correspondence recordsender, date, type and storage path; the scanned letter itself is a file | 800 bytes | 1.3 million | 520,000 | 1.1 million | 4.3 million | 11 million |
| Access-log rowwho opened which record, and when | 600 bytes | 1.8 million | 690,000 | 1.4 million | 5.7 million | 14 million |
Worked example, general practice. A four-GP practice with 8,000 patients (about 11 MiB), each GP seeing 30 patients a day for 230 days, writes 27,600 appointments and 27,600 clinical notes a year, plus 15,000 prescriptions, 20,000 results and 15,000 pieces of incoming correspondence. If the app logs record access, as clinical apps usually do, assume about 10 access-log rows per consult: 276,000 a year, about 158 MiB, which is more than the notes themselves. All told the practice grows by about 305 MiB a year. On storage alone, Hobby holds about two and a half years, Launch about 11 and Scale about 27; choose the plan for recovery and access first. The scanned letters are files, not rows: at two pages of about 250 KiB each, 15,000 letters are about 7.2 GiB a year of object storage, so even Scale’s 10 GiB bucket holds less than a year and a half.
Dental software adds a tooth chart per patient and treatment plans, on top of the patient, appointment and note rows above. X-rays are files, not rows: see files.
| Record | Typical size | Per GiB | Free | Hobby | Launch | Scale |
|---|---|---|---|---|---|---|
| Tooth chart32 narrow rows, one per tooth, each about 600 bytes | 19,200 bytes | 56,000 | 22,000 | 44,000 | 180,000 | 450,000 |
| Treatment plana plan row plus five item rows, each about 600 bytes | 3,600 bytes | 300,000 | 110,000 | 230,000 | 950,000 | 2.4 million |
Worked example, dental. A 3-dentist practice with 6,000 patients stores their demographics (about 8 MiB) and a tooth chart each (about 110 MiB) up front, then adds about 78 MiB a year: 8,280 appointments (12 a dentist a day for 230 days), each with a clinical note and about 10 access-log rows, and 1,500 treatment plans. The first year comes to about 196 MiB. On storage alone, Hobby holds about 9 years; choose the plan for recovery and access first. The X-rays go in object storage. With patients recalled about every 18 months (4,000 a year) and two bitewings each, exported as JPEGs of about 300 KiB, that is about 2.3 GiB a year: more than Hobby’s 2 GiB bucket, about two years of Launch’s 5 GiB and about four years of Scale’s 10 GiB. Keep the imaging archive itself in your imaging system and use the bucket for working copies.
Physiotherapy, psychology, podiatry and similar practices use the patient and appointment rows above, with a session note per consult and programmes for some patients.
| Record | Typical size | Per GiB | Free | Hobby | Launch | Scale |
|---|---|---|---|---|---|---|
| Session note (SOAP)a note of about 1,500 characters | 2,100 bytes | 510,000 | 200,000 | 400,000 | 1.6 million | 4.1 million |
| Exercise or home programmea programme row plus five exercise rows, each about 600 bytes | 3,600 bytes | 300,000 | 110,000 | 230,000 | 950,000 | 2.4 million |
Worked example, allied health. A four-physio clinic with 3,000 patients (about 4 MiB), running 12,880 sessions a year (14 per physio a day for 230 days), each with a session note and about 10 access-log rows, and writing 1,000 home programmes a year grows by about 110 MiB a year. On storage alone, Hobby holds about 7 years and Launch about 29; choose the plan for recovery and access first.
For health privacy obligations, what WattleDB provides and where we are not the right fit, see Industries: Health software.
Every database comes with a private S3-compatible bucket. Files are measured differently from rows, and the object storage quota is a hard limit: once the bucket is full, new uploads are refused. There is no 80% rule here, but there is a catch that uses space you cannot see.
Deleted and replaced files still count for 30 days. A bucket keeps older versions of deleted and overwritten files for a 30-day recovery window, and those versions sit inside your quota. A file you delete keeps using space until its 30 days are up. A 3 MiB photo replaced every day keeps about 30 older copies, around 90 MiB, at any one time. If your app overwrites or deletes files often, allow for that churn.
| File | Typical size | Per GiB | Free 512 MiB | Hobby 2 GiB | Launch 5 GiB | Scale 10 GiB |
|---|---|---|---|---|---|---|
| Invoice PDFgenerated by software, one or two pages | 60 KiB | 17,000 | 8,700 | 35,000 | 87,000 | 170,000 |
| Scanned pageone A4 page in colour at 200 dpi, as PDF | 250 KiB | 4,200 | 2,100 | 8,400 | 21,000 | 42,000 |
| Contract PDFabout 20 pages, created digitally rather than scanned | 400 KiB | 2,600 | 1,300 | 5,200 | 13,000 | 26,000 |
| Intraoral dental X-rayone bitewing or periapical image exported as a JPEG | 300 KiB | 3,500 | 1,700 | 7,000 | 17,000 | 35,000 |
| Phone photo12-megapixel JPEG | 3 MiB | 340 | 170 | 680 | 1,700 | 3,400 |
| Panoramic dental X-ray (OPG)exported as an image file | 5 MiB | 200 | 100 | 410 | 1,000 | 2,000 |
| CT study (DICOM)about 400 slices at about half a MiB each | 200 MiB | 5 | 2 | 10 | 25 | 51 |
Counts assume nothing has been deleted or replaced in the last 30 days. Per GiB = 1,073,741,824 bytes divided by the file size, rounded; whole studies are rounded down.
Know what the bucket is for. It is served from Sydney, with a cross-state copy in Melbourne that we restore from. That copy holds current versions only and is not an endpoint you can reach, so it guards against losing Sydney rather than against deleting a file. Object storage is outside the SLA. The backups and point-in-time recovery on our plans cover your PostgreSQL database, not the bucket. Use the bucket for uploads, working copies, generated exports and previews, and keep your own master copy of anything you cannot re-create. Imaging archives in particular, CT studies above all, outgrow these allowances quickly.
pg_database_size: tables, indexes, and large values PostgreSQL compresses and stores out of line. Write-ahead logs and backups are not counted. The object storage allowance counts every file in the bucket, including older versions kept for the 30-day recovery window.Where these figures will be wrong for you. A table with many indexes, or with a full-text or trigram index over long text, costs more per row. So do wide rows with dozens of columns. A large JSON document in each row adds roughly its own size, less whatever PostgreSQL’s compression saves. An embedding from a 1,536-dimension model is about 6 KB on its own, before its vector index. Files stored inside the database instead of in the bucket count at their full size against the database allowance.
Want your own number? Send a sample schema, or the output of pg_dump --schema-only, with rough row counts to support@wattledb.com.au. We will measure it and tell you which plan fits. If you already have the data in PostgreSQL, SELECT pg_size_pretty(pg_database_size(current_database())); gives you the same figure we count.
Scale is the largest plan you can buy online. If one database needs more than Scale’s usable figure, email support@wattledb.com.au with your estimate before you sign up, and we will tell you plainly whether we can host it.
pg_database_size: tables, indexes, and large values PostgreSQL compresses and stores out of line. Write-ahead logs and backups are not counted. An empty database uses about 16 MB for PostgreSQL’s catalogue and the extensions WattleDB installs, and that does count.pg_dump --schema-only, with rough row counts to support@wattledb.com.au. We will measure it and tell you which plan fits.Load a sample of your real data into a free database and read its size back with pg_database_size. It is the same figure we count, and no card is required.