Gantt Chart Maker
Turn 2 to 30 task,start,end rows into a deterministic UTC Gantt timeline and download the exact preview as SVG.
Privacy: your files never leave your device. All processing happens locally in your browser.
How to use
- 1.Enter an optional title and paste 2 to 30 task,start,end rows with exactly two commas per non-empty row.
- 2.Use real UTC dates in exact YYYY-MM-DD form, with each inclusive end date on or after its start date.
- 3.Generate, verify every bar and tick, then download the standalone SVG created from the exact preview string.
About Gantt Chart Maker
Gantt Chart Maker converts a compact project schedule into a standalone SVG timeline entirely in the current browser tab. Enter one non-empty row per task as task,start,end, optionally add a title, and generate. Each accepted task receives a labeled horizontal bar positioned against a shared UTC calendar axis. The exact SVG string used for the visible preview also powers the download, so the exported chart matches the reviewed markup.
Input is CSV-lite rather than full CSV. Every non-empty row must contain exactly two literal commas, leaving three fields: task label, start date, and end date. Leading and trailing whitespace around fields is trimmed. Quoted fields, quoted commas, additional columns, escaped delimiters, and multiline fields are unsupported. A label that needs a comma must be rewritten without one before use. One malformed row rejects the whole request; the parser never skips it or returns a partial chart.
A chart requires 2 through 30 non-empty rows. Labels may contain at most 80 UTF-16 code units, the optional title at most 100, and raw schedule input at most 20,000. Dates contain exactly 10 characters in YYYY-MM-DD form. Exact limits are accepted; one code unit beyond a limit fails with no truncation. Blank lines are ignored only after the raw input budget is checked, so padding cannot bypass the limit. Duplicate labels and overlapping tasks are allowed and remain separate rows in input order.
Dates are validated as real proleptic Gregorian UTC calendar dates rather than passed through permissive string parsing. Four digits, a hyphen, two month digits, another hyphen, and two day digits are required. Invalid month zero or 13, April 31, non-leap February 29, slashes, missing zero padding, time text, and timezone suffixes fail. Full UTC year setters avoid JavaScript's special numeric Date.UTC treatment of years 0 through 99. The supported lexical year range is 0000 through 9999.
Each end date must be on or after its start date. End dates are inclusive: January 1 through January 3 occupies three calendar-day cells. A task whose start and end match occupies one visible day cell. If every task occurs on the same date, the shared domain is one day and every bar remains visible; the calculation never divides by a zero elapsed span. The chart describes calendar occupancy, not hours, business days, work effort, percentage complete, or resource capacity.
The horizontal domain begins at the earliest task start and ends after the latest inclusive task day. Each day's width is the plot width divided by the inclusive domain day count. Bar x positions use whole UTC-day offsets, and widths use each task's inclusive day count. Coordinates are deterministic and rounded to three decimals only when serialized. No browser locale, current date, daylight-saving rule, or local timezone changes layout.
Spans of 62 days or fewer use deterministic day ticks. The interval expands to keep roughly nine labels while always including the first date and the last date. Longer schedules use month ticks. Very long ranges choose a fixed month step calculated from the full month count, rather than generating thousands of labels. This is deliberate axis sampling, not task truncation: every accepted task and its complete date width remain present. Tick labels are UTC YYYY-MM-DD for day mode and YYYY-MM for month mode.
User strings are safe SVG text, not markup. Ampersands, angle brackets, quotes, and apostrophes are converted to XML entities. XML-forbidden controls and isolated surrogates become U+FFFD. Labels appear in text and title tooltip nodes only after this conversion, and the optional title and accessible aria-label use the same escaping. Script-looking text remains visible characters rather than an SVG element. Numeric attributes come only from validated finite layout calculations.
The SVG uses the W3C namespace, a fixed 1,100-pixel logical width, a row-dependent height, a white background, grid lines, labels, rect bars, title tooltips, viewBox, and an accessible role and label. Wide output scrolls in the preview rather than shrinking labels into an unreadable mobile width. The SVG output has an explicit 100,000 UTF-16-code-unit budget checked against the complete serialized string. The exact validator boundary is accepted and one unit over fails; no markup suffix is dropped or sampled.
Generating successfully creates one Blob URL from the complete SVG. It remains alive for an ordinary same-origin anchor download and is revoked when title or data changes, a result is replaced, generation fails, or the component unmounts. This avoids immediate-revocation download races and accumulated ObjectURL leaks. Blob or URL creation failure leaves no stale preview or download. No schedule, title, SVG, or interaction is uploaded to Lizely.
This tool does not parse Microsoft Project files, dependencies, milestones, critical paths, holidays, working calendars, progress, assignees, costs, baselines, or timezone timestamps. It does not infer whether overlapping work is feasible or promise that a schedule is realistic. Use dedicated project-management software for dependency planning, collaboration, permissions, audit history, and operational commitments.
ISO 8601 supplies the ordered calendar-date convention, ECMAScript defines the Date and UTC operations used after strict validation, and W3C SVG defines the output vocabulary. Eleven evidence goldens cover epoch dates, leap-century rules, years 0000 and 9999, inclusive and single-day spans, and XML escaping. Executable tests additionally cover CSV-lite failures, exact label/date/title/input/output budgets, daily and monthly ticks, injection strings, and no-stale-output behavior in the interface.
Methodology & sources
Check the 20,000-code-unit raw budget, then parse 2 to 30 non-empty CSV-lite rows with exactly two commas, labels up to 80 code units, and two exact 10-character dates. Validate YYYY-MM-DD using a lexical pattern plus UTC full-year calendar component round-trip; require inclusive end day at or after start. Compute earliest and latest UTC day numbers, use an inclusive domain of at least one day, and map every task to a deterministic horizontal rectangle. Use sampled day ticks through 62 days and bounded month-step ticks for longer spans. Replace XML-forbidden characters, entity-escape user strings, serialize finite coordinates, and reject SVG above 100,000 code units without truncation. Revoke the Blob URL on edit, replacement, failure, and unmount.
Frequently asked questions
- Can task labels contain commas?
- No. This is CSV-lite, not full CSV. Every row must contain exactly two commas, and quoted or escaped commas are unsupported.
- Does the end date count as part of the task?
- Yes. Dates are inclusive, so a task from January 1 through January 3 occupies three day cells, and a same-day task occupies one.
- Why does a long schedule use month labels?
- Schedules over 62 days use deterministic sampled month ticks to keep the axis readable. All tasks and complete date spans remain in the chart.
- Is my project schedule uploaded?
- No. Parsing, UTC date arithmetic, SVG creation, preview, Blob creation, and download all stay in the current browser tab.
Related tools
- Bar Chart MakerTurn 2 to 30 label,value rows into a readable bar chart and download the exact preview as SVG.
- Pie Chart MakerTurn a list of labels and values into a clean pie chart and download it as a PNG — right in your browser.
- Line Graph MakerTurn labeled numeric rows into a clean line graph and download a standalone SVG without uploading data.
- Random Date GeneratorGenerate uniformly sampled calendar dates from an inclusive range without daylight-saving drift.
- CPS TestMeasure how fast you can click — your clicks per second (CPS) — with a live countdown and an instant speed rating, right in your browser.
- Invoice GeneratorFree, no-login invoice maker that builds a print-ready PDF right in your browser — add line items, tax, and a discount and watch the subtotal, tax, and total update live. Your data never leaves your device: no upload, no account, and no watermark on the PDF.
Device & Productivity guides
View all- How to Use a Notepad Effectively for Distraction-Free Writing
- Set a Browser Alarm in Under a Minute | Lizely
- How Long Is a Pomodoro? Cycle Lengths Explained
- How to Stop a Stopwatch on Your Browser
- How to Set Up a Clean Countdown Timer for OBS
- How to Test Keyboard Performance and Find Dead Keys
- How to Ace the CPS Test 1 Second Challenge