The Free Graphing Tool for Math Teachers

Give your tests, worksheets, and presentations the professional touch. With GraphFree, you can quickly and easily create graphs of almost anything from high school math.

Start Graphing Now
Example of hyperbols graph with slant asymptotes

Graph circles, ellipses, and hyperbolas along with their asymptotes

Example of piecewise function graph with open and closed endpoints

Graph piecewise functions, complete with open and closed endpoints

Example of slope field graph

Graph slope fields for AP calculus

Example of sine curve with exact fractional labels

Trigonometric graphs with smart labels for fractions of π

Example of polar function with inner loop shaded

Graph polar functions on polar or Cartesian grids

Parametric functions with optional direction arrows

Right-click the graph to save or copy. (Trouble pasting? See the help.)

Drag labels/text with the mouse to reposition. (Hint: do this last, since updates to the graph will usually reset your changes.)

I taught math and physics for twenty years. Now I’m a stay-at-home dad for two adorable young children. If you could help this site bring in a little money for my family, I’d be very grateful.

And thank you to those who have supported me so far!

Buy Me a Coffee at
Buy Me a Coffee at

I taught math and physics for twenty years. Now I’m a stay-at-home dad for two adorable young children. If you could help this site bring in a little money for my family, I’d be very grateful.

And thank you to those who have supported me so far!

What’s New? (May 28, 2020)

Many of you have provided helpful feedback about the new interface. I want to make GraphFree friendly enough that any math teacher can feel comfortable with it, while retaining the power that makes GraphFree distinctive. It’s not always easy to strike the best balance, but I think we’re getting closer.

  • You can now override the automatic gridline spacing settings for some grid types with your own custom values.
  • You can now set gridline spacing separately for each axis.
  • Gridline labels now default to being near the axes again. I thought they were easier to read in the margins, but I’ll bow to popular opinion. And you can still move them wherever you want by dragging with the mouse.
  • Need darker grids for better photocopying? That option is back.
  • The XY Scatter plot type now has dots as a symbol choice.
  • Graph labels have a new font with a more legible decimal point.
  • You can now add up to ten annotations to the graph. There’s only one box for them now, but you just separate them with semicolons.
  • The algorithm to determine whether to label every grid line, every other line, etc. is improved.
  • The semi-log plot now has a wider margin so the y-axis labels fit better.
  • Fixed a bug that sometimes occured when shading a region bounded by an implicit function.

May 12, 2020

Launched the completely rewritten GraphFree, designed for faster and easier use while still graphing doggone near everything you need.

  • More natural, keyboard-centric, data entry. Text boxes now respond to shortcuts such as Ctrl-Z (undo).
  • Graphs update automatically when you hit the Enter key.
  • Shading a region is now much, much easier. Just enter any ordered pair contained in the region you want to shade.
  • Instead of over-complicating the interface with a control for everything, I’m trying to make more things just work sensibly and automatically.
  • New Polyline plot type! Create and shade polygons (or any sort of connect-the-dots plot) just by entering the vertices. I could have used this a few times when I was teaching motion graphs in physics.

Entering Functions

The new GraphFree is designed for convenient keyboard use, making data entry faster in most situations. If there’s a button for it on a traditional calculator, there’s probably a way to type it now.

Don’t get hung up about whether or not to include spaces. They’re included in some of the examples to make them more readable, but they’re never required.

SituationWhat You Can Type
Exponents2^5, 3^(x+2), x^-3
Square rootsqrt(x + 2)
Mathematical constants e and pipi, e, 5pi, e^x
Scientific notation, e.g., 2 × 1062E6, 4E-5
(Be sure to use a capital E!)
(x + 3)(x + 2)(x + 3)(x + 2)
No, you don’t need the multiplication sign.
Logarithmslog(1000), ln(e)
Log with different bases, e.g., log2x,ln(x)/ln(2)
(using the change of base formula)
sin2xsin^2 (x)
Of course, (sin(x))^2 still works if you’re used to those other calculators

Complete Function List:

CategoryAvailable Functions
Basic Math & Algebra abs (absolute value), sqrt (square root)
Logarithmicln (natural log) and log (base 10)
Trigonometricsin, cos, tan, cot, sec, csc
Inverse Trigonometricarcsin, arccos, arctan, arccot, arcsec, arccsc
Hyperbolicsinh, cosh, tanh, coth, sech, csch
Inverse Hyperbolicarcsinh, arccosh, arctanh, arccoth, arcsech, arccsch

Graphing Piecewise Functions

You may express the conditions of a piecewise function using either inequalities or interval notation. Infinite intervals can be expressed in interval notation using Inf for infinity.

How to create a piecewise graph

Circles, Ellipses, Hyperbolas, Etc.

To graph conic sections, select the Implicit plot type and enter the full equation, equals sign and all. If you’re on a slow computer, be aware that the implicit plot type might take a little longer to run, especially if you set large values for the plot width and height.

Implicit plot examples

Vertical Lines

If you want a dashed vertical line for an asymptote, enter the equation (e.g., x = 4) with the Asymptote plot type. You can even enter multiple asymptotes at once.

If you want a solid vertical line instead, enter the equation in the Implicit plot type. In the implicit plot type, however, you can enter only one equation in each plot.

How to plot vertical lines

The Cartesian (Trig) Grid

This grid type is perfect when your relevant x-values will be expressed in terms of π. With the Cartesian (Trig) grid type, you will enter the x-bounds of your grid in terms of π, and grid labels for the common fractions of π will display as exact values (e.g., π/6) instead of decimal approximations.

The Cartesian (Trig) grid type

Polygons & Polylines

The new Polyline plot type has two quite different uses. One is to create polygons such as those that might be used in coorinate geometry questions. For this use, you will usually enable the Connect Endpoints option

Without the endpoints connected, the Polyline plot is great for creating some graphs that would be annoying to assemble as piecewise functions. Instead of specifying equations and intervals of the various segments, simply specify the points you wish to connect.

By the way, when you enter the ordered pairs, you really do need the parentheses.

Polygon and motion graphs

Caption, Legend, & Annotations

The caption, or title, appears below the graph.

The legend explains the meaning of different lines or scatter plot symbols. It appears either to the right of the graph or below it, depending on the width of the graph.

Annotations are used for any other notes you wish to add. You can use the mouse to drag them anywhere on the graph you wish. (For that matter, you can move the captions and legends too if you feel the need.)

You can get some special mathematical symbols using the button bar at the bottom of the captions panel. Click a button to copy the symbol to your keyboard, then paste (Ctrl-V) it into your text.

Caption, legend, and annotation

Shading a Region

The new version of GraphFree makes it much, much easier to shade a region of your graph. All you have to do is specify an ordered pair inside each region you wish to shade.

Curve shading examples

Tweaking the Position of Text

All text in GraphFree—axis labels, grid labels, caption, legends, and annotations—is now movable. All you have to do is click and drag it with your mouse.

Do, however, make any other changes you wish to make to the graph before repositioning the text. This is because most changes you make to a graph will cause it to be redrawn from scratch, resetting the texts to their original positions.


You can use the Asymptote plot type to enter the equations of multiple horizontal, vertical, and/or slant asymptotes all in one line. The lines will appear dashed as is conventional for asymptotes. (If you don’t want dashed lines, used the regular Function plot type instead, or the Implicit plot type for vertical asymptotes.)

Since this plot type is designed specifically for asymptotes, you need to write the equations of the asymptotes in the “normal” way, which means x = c, y = c, and y = mx + b. Alternate forms usually won’t work.

Asymptote examples

The Number Line

This has changed slightly in the new GraphFree. Now, when you select Number Line as the grid type in the Axes & Grid panel, the plot panels will now contain number line inputs instead of the other plot types.

To enter data in a number line plot, you may enter multiple points and/or intervals separated by semicolons. Just as in the piecewise plot, you may use interval notation or inequalities to express your intervals. In interval notation, you may use inf to express an infinite interval.

Number line example

Trouble Pasting a Graph?

The usual procedure for pasting a graph—right-click, copy, then paste into your program—works exactly as expected in most programs. A few programs, however, need a little help to handle the pasting properly.

Microsoft Word can be one of those programs. If pasting into Word doesn’t seem to work, use the Paste Special command instead of the normal paste, and then select Device Independent Bitmap.

Fix pasting problem with Paste Special

Chopped Off at the Edge?

Graphfree is programmed to keep your graph from extending awkwardly beyond the edge of the grid and into the margins. Usually, that’s helpful. But once in a while you have a graph that just clips the edge of your viewing window, and that clipping effect looks a little bit off. Fortunately, you can compensate for it by extending the viewing window just a tiny bit.

Extend the viewing window a bit to fix clipped edges.
e.g., 2x + 1    if   -4 < x <= 6
e.g., 2x + 1    if   -4 < x <= 6
e.g., 2x + 1    if   -4 < x <= 6
e.g., 2x + 1    if   -4 < x <= 6
e.g., 2x + 1    if   -4 < x <= 6
e.g., 2x + 1    if   -4 < x <= 6

Number lines cannot be shaded.