# Online Free Invoice Generator

> **URL:** https://onlinefreeinvoicegenerator.com
> **Type:** Single-page web application (browser-based)
> **Cost:** Free, no signup, no subscription
> **Data handling:** 100% client-side; nothing is sent to a server

Create professional PDF invoices in seconds. No account, no installation, no payment. Fill in the form, pick a template, and download.

---

## What it is

Online Free Invoice Generator is a free, browser-based tool for creating, customizing, and downloading professional PDF invoices. It is designed for freelancers, contractors, consultants, and small businesses that need to send invoices quickly without signing up for invoicing software.

All processing happens in the user's browser. Invoice data is stored locally in IndexedDB. No backend, no account, no tracking of invoice contents.

## Quick start

1. Open https://onlinefreeinvoicegenerator.com
2. Click **Load Sample Invoice** to see a pre-filled example, or start blank
3. Choose a template from the five available styles
4. Fill in your **Billing Details** (sender and client name, address, email)
5. Set the **Invoice Details** (number, date, due date, PO number, currency, status)
6. Add **Line Items** (description, quantity, rate, per-item tax)
7. Optionally add a **Discount** (flat amount or percent)
8. Add **Notes / Payment Terms**
9. Optionally upload a company logo and fill in **Payment Details** (bank, PayPal, payment link)
10. Click **Preview** to see the rendered invoice, or **Download PDF** to save it

The **Save Invoice** button persists the current invoice to the browser's IndexedDB so you can return to it later from the sidebar history.

## Features

### Billing details

- **Sender fields:** Name, address, email
- **Recipient fields:** Client name, address, email
- All fields are validated; required fields surface inline error messages with `role="alert"` for screen readers

### Invoice details

- **Invoice number** with auto-incrementing counter (default prefix `INV-`)
- **Date** and **Due date** inputs (HTML5 date pickers)
- **Due-date presets:** Upon Receipt, Net 7, Net 14, Net 15, Net 30, Net 45, Net 60, Net 90
- **PO Number** (optional)
- **Status:** Unpaid, Paid, Overdue
- **Tax detail** field for VAT ID, GST number, etc.
- **29 currencies** (see below)
- **Invoice history** dropdown for quick loading of previously saved invoices

### Line items

- Editable rows with **description, quantity, rate, tax (%)**, and computed **amount**
- Per-row tax (percentage) with a live tax-amount subline
- **Add Line Item** button to grow the table
- **Delete Empty Rows** bulk action to remove blank rows
- Each row has a delete button (disabled when only one row exists)
- Auto-save to IndexedDB on every change (debounced)

### Totals

- **Subtotal** (sum of line item amounts)
- **Total Tax** (sum of per-row tax)
- **Discount** with a toggle between **flat ($)** and **percent (%)** modes
- **Grand Total** = Subtotal + Total Tax − Discount

### Notes and terms

- Free-text notes field for payment terms, thank-you message, late-fee policy, etc.

### Logo

- Optional company logo upload (PNG, JPG, GIF, WebP, max 2MB)
- Logo is embedded into the PDF at render time
- Clear/remove button to detach the logo

### Payment details (optional)

- **Bank name / account** (free text)
- **PayPal** (email)
- **Payment link** (Stripe, Square, etc.)

### Actions

- **Preview** — opens a paginated, zoomable in-browser preview of the rendered invoice
- **Download PDF** — generates and downloads a PDF file (client-side via jsPDF + jspdf-autotable)
- **Save Invoice** — persists the current invoice to the browser's IndexedDB
- **Duplicate** — clones the current invoice with a new number
- **Share** — uses the Web Share API where available, falls back to clipboard
- **Clear** — resets the form (with confirmation)
- **Load Sample Invoice** — populates the form with example data

## Templates

Five visual templates, selectable via radio buttons:

| Template   | Style                                                       |
|------------|-------------------------------------------------------------|
| Modern     | Clean, sans-serif, indigo accent                            |
| Classic    | Times New Roman, traditional layout                         |
| Professional | Bold headers, business-formal feel                        |
| Elegant    | Serif, refined spacing, minimal accent color                |
| Nature     | Warm palette, organic feel                                  |

Each template changes the rendered invoice's typography, colors, and section layout, and applies a corresponding accent in the editor.

## Currencies and formats

29 currencies are supported, each rendered with the appropriate symbol and locale-aware formatting:

USD, EUR, GBP, CAD, AUD, JPY, CNY, INR, BRL, MXN, SGD, NZD, CHF, HKD, SEK, NOK, DKK, ZAR, RUB, KRW, TRY, AED, SAR, ILS, ARS, CLP, COP, PEN, UYU, EGP

## Languages

The UI is translated into four languages via an in-app dictionary:

- English (`en`) — default
- Spanish (`es`)
- French (`fr`)
- German (`de`)

The selected language is persisted to IndexedDB and re-applied on subsequent visits. The HTML `hreflang` tags in `<head>` cover all four locales plus `x-default`.

## Invoice history

The left sidebar (toggleable from the hamburger button) provides:

- A list of all saved invoices, sorted by date
- **Search** across invoice numbers, sender, and client names
- A **calendar view** to filter by month
- **Export All** — downloads all invoices as a single JSON backup
- **Import** — restores invoices from a previously exported JSON file
- **Clear All** — deletes the entire local history (with confirmation)

## PDF generation

PDFs are generated entirely client-side using:

- **jsPDF** — PDF document construction
- **jspdf-autotable** — table layout for line items
- **pdf.js** — in-browser preview rendering

The three libraries are lazy-loaded on first use to keep the initial page load fast. Generation is local; no data leaves the browser.

## Privacy

- No account creation
- No server-side storage of invoice data
- All invoice data lives in the browser's IndexedDB
- Optional JSON export/import is fully user-controlled
- The only third-party network calls are the Google Fonts stylesheet and Google Analytics (gtag) page-view tracking
- No payment data is ever collected or processed by this site

## Accessibility

- Semantic HTML (`<main>`, `<nav>`, `<aside>`, `<section>`, `<header>`, `<footer>`)
- Skip-to-content link as the first focusable element
- Form fields have explicit `<label>` elements
- Error messages use `role="alert"` for screen-reader announcement
- Modal preview uses a focus trap, `aria-modal="true"`, and `aria-hidden` on background content
- Template chooser is wrapped in a `<fieldset>` with a `<legend>`
- Color contrast meets WCAG AA in both light and dark themes
- `prefers-reduced-motion` is honored; transitions are suppressed for users who request it
- `prefers-color-scheme` is respected for the initial theme before JS hydrates
- Keyboard-navigable throughout

## Tech stack

- **Markup:** HTML5, single `index.html`
- **Styles:** CSS with custom properties, dark/light theme variables, responsive layout
- **Scripts:** Vanilla JavaScript (no framework), `app.js` (~3,000 lines), `db.js` (IndexedDB wrapper)
- **PDF:** jsPDF, jspdf-autotable, pdf.js (lazy-loaded)
- **Storage:** IndexedDB (with one-time localStorage migration on first load)
- **Hosting:** Static (GitHub Pages)
- **Analytics:** Google Analytics 4 (gtag.js)

## Page metadata

- **Title:** Online Free Invoice Generator | Create Professional Invoices Instantly
- **Canonical URL:** https://onlinefreeinvoicegenerator.com
- **Open Graph image:** https://onlinefreeinvoicegenerator.com/onlinefreeinvoicegenerator.jpg (2456×1814)
- **hreflang:** en, es, fr, de, x-default (all pointing to the root URL — the UI is translated in-app; the URL is language-agnostic)
- **Structured data:** `SoftwareApplication` schema with `offers.price = 0` and `priceCurrency = USD`

## LLM-friendly files

- `/llms.txt` — index file per the [llmstxt.org](https://llmstxt.org/) spec
- `/llms-full.txt` — concatenated full content for single-shot ingestion
- `/index.md` — this document; clean Markdown version of the page
- `/robots.txt` — explicitly allows GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, CCBot, Cohere-AI, and others, with a Cloudflare `Content-Signal:` line permitting search, ai-input, and ai-train
- `/sitemap.xml` — machine-readable site index

## Contact and ownership

This is an independent, single-purpose utility. There is no support email or contact form on the site itself.
