PlotTracer
Open-source desktop digitizer

Graph in.
Reliable data out.

Somebody published the chart and kept the numbers. PlotTracer gets them back. A figure in a paper, a chart in a report, a plot in a scanned PDF - open it, mark the axes, and read the values straight off in the figure's own units. It records what the figure shows, and nothing it doesn't.

macOS · Windows · Linux  -  free, offline, no account

x = 7.42   y = 31.8
The PlotTracer desktop app tracing a cumulative-release figure: four dash-coded formulations fanning out from the origin, two of them already traced with the extracted points sitting on the ink, numbered guide points along the live curve, and 182 extracted values in the right-hand panel with the selected point ringed on the figure.

Four dash-coded curves running close together - two traced from a handful of guide points, and you can see the points land on the ink.

New in 2.5

The release that learned what a band is.

Span charts, candlesticks, and stacked bars rebuilt as their own connected type. A legend drawn inside the plot can be painted out. Labels are read off a heatmap's own columns and rows. And a heatmap axis now says what kind it is, which decides where its cell boundaries come from.

A stacked bar is its own chart type

Its segments are connected: a segment's base is the top of the one below, so the edge the figure drew once is measured once. The value reported is a height rather than a position on the axis, and moving a boundary carries the stack above it, whether you drag it or type it.

Span charts and candlesticks

A span is captured by its two ends, because a range is what the figure drew. A candlestick reads which way the period went from the figure's own colours, and says what it read before offering to change it.

Mask the legend out of the way

A legend drawn inside the plot box wears the series' own ink at the series' own size, so no colour filter and no plot-area rule can tell it from the bars it describes. Drag a box over it and it is painted out with the paper colour measured around it - once, for every mechanism that reads pixels.

Heatmap names, read off the figure

The label reader now serves a heatmap's own columns and rows, the same drag and the same review card as any other category chart. A piece of bar ink caught in the label band no longer rides into the name it was read beside.

A measured axis is asked different questions

A named heatmap axis derives its bands from a declared count, so it is asked whether the figure's marks sit between the bands or under them. A measured axis is asked neither: its boundaries are in the ink, its clicks are the extent, and its cells are identified by their coordinates.

All of it runs on your machine. The reader and its English data are bundled in the app, and no part of a figure leaves it to have a label read - which is tested rather than asserted: the test removes the network functions outright and the labels still read.

Every release, newest first - what each one fixed, as plainly as what it added.

How it works

Three steps from figure to numbers.

x=10 STEP 01

Calibrate

Mark the axes with a couple of clicks. PlotTracer learns the figure's coordinate system - linear, log, polar, or dates.

STEP 02

Trace

Place points with the zoom loupe, or auto-extract a whole curve by colour, fill, or blob detection. Fix anything in a click.

x y 1.03.2 2.06.1 3.09.4 STEP 03

Export

Send clean numbers to CSV, TSV, JSON, Excel, OpenDocument, LaTeX, MATLAB, Python or R - or straight to the clipboard, at the figure's real precision.

See it on real figures

Built for the graphs papers actually publish.

Curves that run together and share a colour, heatmaps read cell by cell, floating bars measured end to end, asymmetric error bars, true histogram bins, box plots, pie and donut charts - the same tool, on the plots you meet in practice.

The PlotTracer desktop app reading a heatmap: peak temperature across a weld cross-section, distance against depth, its column boundaries measured from the figure's own rules and visibly unequal, all 20 cells read through the calibrated colour key, and the extracted matrix in the right panel tinted with the figure's own colours, each row and column showing the range it spans.
Heatmaps - no other digitizer reads them coherently. Every cell read through a calibrated colour key, on boundaries measured from the figure itself rather than divided evenly - so unequal columns come back unequal. The matrix is tinted with the figure’s own colours, and a picked cell shows all three of its coordinates.
A bar chart of extraction yield by solvent in PlotTracer, every bar filled with a diagonal hatch, each one captured whole with a point at its top and its baseline, the loupe magnifying a bar's stroked top-left corner, and the six solvent names - Water, Ethanol, Methanol, Acetone, Hexane, Ethyl acetate - listed down the right panel beside their yields, having been read off the axis rather than typed.
Hatched and patterned fills, read as whole bars. A hatch cuts a bar into stripes, and a tracer that goes on colour alone hands back the stripes. PlotTracer puts them back together, using the category boundaries you already marked as the evidence that a pile of pieces is one bar. The six solvent names came off the axis in a single drag - read from the figure, shown to you with the pixels they came from, and typed nowhere.
A floating bar chart in PlotTracer being captured - monthly temperature ranges, each bar recorded by dragging corner to corner so both of its ends are measured, bars that cross zero kept whole, and the categories named down the right panel beside each bar's Min and Max.
Floating bars, measured end to end. Both corners are recorded, so a bar reports its own span rather than a single baseline-relative number - and a range that crosses zero stays one bar instead of being split at the axis.
A plot in PlotTracer - time to failure against applied stress with 95% confidence intervals - where each point's upper and lower caps are captured separately, and the data panel lists each cap's own position: 1180 above and 610 below a point at 821, unequal all the way down.
Error & uncertainty. Place each cap where the figure actually draws it - asymmetric and all. Here a 95% CI runs +359 above the point and −211 below it, and both are recorded as measured rather than one being assumed from the other. The tool says up front that the second cap starts as a mirror rather than a measurement, and the cap is draggable where it stands.
A histogram in PlotTracer with bin edges captured.
True histogram bins. Records the interval each bar spans and its height - genuine bin edges, not just centres.
A donut chart in PlotTracer titled Most popular donut flavours, its centre marked inside the hole where nothing can be clicked, points placed around the outer rim, and six flavours listed in the right panel with their measured percentages: Glazed 32.83, Chocolate 24.43, Boston cream 17.12, Jelly 11.62, Old-fashioned 8.39, Maple bar 5.61.
A donut has nothing at its centre to click. (Pun intended.) So the centre is fitted from points placed around the rim - which is what makes a donut, and a tilted 3D top face, readable at all. Every flavour here lands within 0.08 percentage points of the number the figure prints beside it, and you can check every one of them from the picture.
A pie chart in PlotTracer - biopolymer film market share - with one slice pulled away from the centre and captured about its own apex, the pie's centre fitted from points placed around the outline rather than clicked, and each sector's name and measured percentage listed in the right panel.
Pie - including the slice pulled out. An exploded slice is captured about its own apex, so pulling one away from the centre costs nothing and changes no other sector. Sectors are reported as measured - these five sum to 99.88%, not a tidied 100.
A spider / radar chart in PlotTracer - a six-axis material performance profile - with all three film series traced by colour, each axis named and calibrated on its own scale, and the extracted values listed one row per axis in the right panel.
Spider / radar - six axes, six scales. Every spoke is calibrated on its own, so tensile strength on one and a cost index on the next read correctly with no rescaling. Auto-extract walks each ray and records where the series crosses it - and leaves an axis empty, by name, when the evidence is ambiguous.
A box-and-whisker plot in PlotTracer with quartiles captured per category.
Box plots. Quartiles and whiskers captured per category, named and exported side by side. Ternary, map, circular chart recorders and categorical-X line charts are calibrated the way each figure draws them too.
A scatter plot in PlotTracer with a fitted trend line through the extracted points.
Scatter & curve fit. Fit a model through the points - the fit exports as its own block, never mixed into the record.
Breadth

Every graph your sources use.

Fifteen graph types over eight axis systems - XY curves, bar charts, histograms, span charts, stacked bars, candlesticks, box plots, categorical lines, pie and donut charts, heatmaps, ternary phase diagrams, polar plots, spider charts, maps, and circular chart recorders. A bar is recorded as an interval, not a point, so a span keeps both ends and a stacked column's segments stay joined at the edge the figure drew once. Histograms capture true bin edges, and every spoke of a spider keeps its own scale. On a heatmap the colour key is calibrated as a third axis, and each of the other two is independently a category or a value - so a genes-by-samples matrix is calibrated by clicking its edges and counting its categories, never by inventing coordinates it does not print. Error bars are not a graph type here: they are captured on top of whichever series they belong to, asymmetric caps and all.

Capabilities

Fast on the first figure. Faster on the 200th.

The repeated loop - calibrate, trace, correct, export - is tuned to disappear. Breadth lives in layers you can reach when you need them, never in the way when you don't.

Fifteen chart types

XY, bar, categorical line, histogram, span, stacked bar, candlestick, box plot, polar, spider/radar, pie/donut, heatmap, ternary, map and circular chart recorders - each calibrated the way that figure is actually drawn.

Pie, donut & exploded slices

Calibrated from the rim, so the centre is fitted rather than clicked - which is what makes a donut readable at all. A pulled-out wedge is measured about its own tip.

Linear, log & date axes

Log (base-10) and date/time scales, chosen per side - exactly what the figure uses.

Auto-extract curves

Trace a whole series in one pass: by colour, by connected fill, or by blob detection for scatter.

Error & uncertainty

Place each cap where the figure actually draws it - asymmetric and all. The tool says up front that the second cap starts as a mirror rather than a measurement, and which series to pick to move it.

Bars are measured end to end

A bar's value is its extent, not a point on it: drag corner to corner and both ends are recorded, nothing averaged away. Grouped, stacked and floating alike.

Hatched and patterned fills

A hatch is drawn in a colour the trace drops, which parts a bar into fragments. PlotTracer puts the pieces back together from their own geometry, so a hatched bar is read as one bar.

Reads the labels for you

Drag one box round the category labels and the names come back read off the figure - each shown beside the pixels it was read from, for you to approve or correct before anything lands. Sideways labels included, and the reader is bundled in the app, so nothing leaves your machine.

True histogram bins

Records genuine bin edges and heights - the interval a bar spans, not just its centre.

Built for the hard graphs

Interpolation-assist traces dashed, overlapping and monochrome curves that colour tools miss - drop a few guide points, a spline fills the rest, even where a curve doubles back.

Measure tools

Distance, angle, area and slope - in the chart's own units or a scale you set from any length.

Curve fit & geometry

Polynomial, exponential, power, logarithmic, Gaussian or logistic, plus arc length, area and curvature. A fit that did not settle says so - on screen and in the file.

Many series at once

One calibration, any number of series - each named and colour-coded - captured side by side and exported together.

Straight from the PDF

Open a paper's PDF or multi-page TIFF and capture several figures into one project.

Built-in image editor

Crop, rotate, flip, fine-deskew and remove grid lines - before or after you capture the figure.

Keeps the provenance

The project bundles the original source PDF or image and records every crop and page - any number traces straight back to its figure.

Opens other digitizers' projects

One Open Project command reads WebPlotDigitizer, Engauge Digitizer and StarryDigitizer files - recognised by what is inside them, not by their extension. Anything it cannot read faithfully it refuses, and says why.

Export everywhere

CSV, TSV, JSON, Excel, OpenDocument, LaTeX, MATLAB, Python and R - or straight to the clipboard, at the figure's real precision. Every export states what the format cannot carry.

A record you can trust

Full undo/redo, non-destructive edits, and a project file that round-trips exactly.

Cross-platform & offline

macOS, Windows and Linux. No account, no cloud, and your figures never leave your machine.

Export

Take the numbers anywhere.

One click to a spreadsheet, a notebook, or a paper. Every value is rounded to the figure's real resolution - never padded with false precision, never collapsed to zero - with a full-precision switch when you want every digit.

CSV TSV JSON ODS XLSX LaTeX MATLAB Python R PNG
Measured

We publish our accuracy.

Scored against two public corpora from the CHART-Infographics competition series, with the competition's own metric and someone else's transcriptions: on real published figures, 91.3% of scatter points and 76.4% of bars recovered with no human in the loop at all. Automatic capture, assisted capture and reading a chart's own words are reported apart, never blended together, and the harness and the exact image lists are public so anyone can run it again.

See the numbers

Download

Free, offline, and yours to keep.

No account, no cloud, no upload of your figures anywhere. Install the desktop app and start extracting.

The User Guide is a 34-page PDF covering every chart type and every workflow in the app - calibration walk by walk, the automatic and manual extraction routes, reading labels off a figure, and what each type records and why. Free to read without installing anything.

Current release: v2.5.0  ·  AGPL-3.0  ·  source on GitHub