Skip to main content

Free Graphing Calculator

Plot one or more functions y=f(x) on an interactive zoom-and-pan grid, compare curves, and export the graph as a PNG. Free, private, no login — a lightweight Desmos alternative.

Drag to pan · scroll to zoom
Axes and scale

🔒 Functions are evaluated locally in your browser — nothing you plot is sent anywhere.

Common uses

  • Parabola GrapherGraph a parabola y = ax² + bx + c and see its vertex and shape.
  • Linear Equation GrapherPlot straight lines y = mx + b.
  • Sine Wave GrapherGraph sine, cosine and other trig functions.
  • Quadratic Function GraphVisualise any quadratic and its roots.
  • Plot Two FunctionsGraph two functions together and see where they intersect.
  • Exponential Function GraphGraph exponential growth and decay, e.g. 2^x or e^x.

How It Works

Plots one or more functions y = f(x) on an interactive grid you can pan and zoom. Functions are parsed and evaluated with math.js, so you can use sin, cos, sqrt, exp, log, powers and more. Asymptotes (like tan x or 1/x) are detected and the curve is broken cleanly. Export the plot as a PNG. Everything runs in your browser.

  1. 1
    Type a function
    Enter expressions in x, e.g. x^2 - 3, sin(x), or 1/x. Add up to five, each in its own colour.
  2. 2
    Explore the graph
    Drag to pan and scroll (or use the buttons) to zoom. The grid relabels itself as you move.
  3. 3
    Read the curves
    Multiple functions plot together so you can compare them and see where they meet.
  4. 4
    Save a PNG
    Download the current view as an image. Nothing is uploaded.

Functions are evaluated locally in your browser — nothing you plot is sent anywhere.

Guide

Worked example

The page opens with two curves already entered, "x^2" and "sin(x)", on a grid that runs from -10 to 10 across and -7 to 7 up. Tick "Mark roots, extrema and intersections". A table of 19 key points appears. It includes an "Intersection" of "x^2 ∩ sin(x)" at x = 0.87673, y = 0.76865, and a "Local maximum" of sin(x) at x = 1.5708 with y = 1. Move the pointer over the graph (on a phone, tap it) to read the (x, y) of each curve. Press "Add function" and type a*sin(x). The letter a is not x, so a slider "a =" appears set to 1. It runs from -10 to 10 in steps of 0.1, and the new curve redraws as you drag it. Choose "3×" under "PNG size" and press "PNG" to save graph.png.

Which settings to use, and the limits

  • Type maths the way you would write it. Use ^ for powers: x^2, 2x^2 and x² all work, and ** is read as ^. Multiplication can be left out, as in 2sin(3x) or x(x+1). "sin x" and "sinx" are read as sin(x), |x| becomes abs(x), √x becomes sqrt(x), and π, e and pi are known. A comma between two digits outside brackets is read as a decimal comma, so 1,5x is 1.5x. Both ln(x) and log(x) are the natural logarithm; use log10(x) for base 10. Names such as arcsin, tg and sgn are accepted for asin, tan and sign. Cube roots like x^(1/3) give the real value for negative x.
  • Write the equation in the form that matches the curve. A plain expression, "y = ...", "f(x) = ..." and g(x) or h(x) draw a function of x. "r = 2*cos(t)" draws a polar curve, with the angle running from 0 to 4π (two turns) and either theta or t as the variable. "x = 3" draws a vertical line. An equation in both letters, such as x^2+y^2=4, draws an implicit curve. A pair in brackets, such as (cos(t), sin(t)), is parametric, with t from -10 to 10. You can plot up to 5 at once, each in its own colour. The × beside a row removes it.
  • Use a letter as a parameter and drag it. Any other letter or name that is not a built-in constant such as e or pi becomes a parameter, so a*sin(b*x) gives sliders for "a =" and "b =". Each starts at 1 and runs from -10 to 10 in steps of 0.1. The number box beside a slider accepts other values, such as 25 or 0.05. At most 6 parameters get sliders, taken in alphabetical order. The values are kept in the link that "Share result" makes. A mistyped function name is not a parameter: foo(x) gives an "Unknown function or name" message instead.
  • Set the window by dragging or by typing the range. Drag to pan and scroll to zoom. On a phone, drag with one finger, pinch to zoom and tap to read values. "Zoom in" and "Zoom out" change the window to 0.8 and 1.25 times its width, and "Reset" returns to -10 to 10 and -7 to 7. Open "Axes and scale" to type "x min", "x max", "y min" and "y max"; press Enter or leave the box to apply. Each max must be greater than its min, and values up to 1,000,000,000 are accepted. Tick "Equal scale (1:1)" so a circle looks round.
  • Find roots, peaks and crossings automatically. "Mark roots, extrema and intersections" lists "Root (x-intercept)", "y-intercept", "Local minimum", "Local maximum" and "Intersection" points, with the function, x and y. It works only for curves of the form y = f(x) and only within the visible x range, so zoom out if a point is missing. The tool samples 900 points across the window and refines each find, so a feature much narrower than the window can be missed. At most 60 rows are shown, and values show 5 significant digits. "Copy table" copies the rows as tab-separated text for a spreadsheet.
  • Pick the background and size before you export. "PNG" saves graph.png at 1×, 2× or 3× the size of the canvas on screen (2× is the default), and "SVG" saves graph.svg as a vector drawing that stays sharp at any size. "Background" can be "White" or "Transparent". Exports use light colours even when the page is in dark mode, and they follow the window you are looking at, including "Equal scale (1:1)". Marked key points appear in the file only if the box is ticked. "Share result" gives a link that holds your functions, window and parameter values after the # sign, which the browser does not send to the server.

Common problems and how to fix them

It says "Unknown function or name “foo”. Try sin, cos, tan, sqrt, abs, ln, log10." (with your own name).
The word before a bracket is not a function the engine knows. Check the spelling, or put a multiplication sign in, because foo(x) is read as a function call. Supported names include sin, cos, tan, sec, csc, cot, their inverse and hyperbolic forms, sqrt, cbrt, abs, exp, ln, log, log10, log2, floor, ceil, round and sign. A single letter used on its own, such as k, is not an error: it becomes a slider.
It says "Enter y = f(x), r = f(θ), x = a number, (x(t), y(t)) or an equation in x and y."
The equation has a shape the tool cannot draw. Two causes are y on both sides of a "y =" line, as in y = y+1, and an equation with neither x nor y, such as a = 5. Write y = f(x) with only x on the right. For a vertical line write x = 5, and for a horizontal line y = 5. An equation in x and y such as x^2+y^2=4 is drawn as a curve. If you wrote x^2+y without an equals sign, you get "This uses y or r, so write it as an equation, for example x^2+y^2=4 or r=2*cos(t)."
It says "Inequalities are not plotted. Use = to draw the boundary curve."
Any < or > in the text, including ≤ and ≥, triggers this message. The tool draws curves and does not shade regions. Replace the sign with = to draw the edge of the region, for example y = x^2 instead of y > x^2, and read the shaded side yourself. For a region defined by several inequalities, plot each boundary and look at where they cross.
It says "No key points in the current view." after ticking "Mark roots, extrema and intersections".
Key points are searched only for curves written as y = f(x), and only inside the visible x range. Polar, parametric, vertical-line and implicit curves are skipped, so a page with only x^2+y^2=4 always shows this line. Otherwise there may be none inside the window. Zoom out or set "x min" and "x max" wider and the table fills in.
It says "Could not load the math engine. Check your connection and try again."
The maths library is fetched the first time the page is opened and is not part of the page itself. If that download fails, for example on a weak connection or a blocked network, the graph area is replaced by this message and the sliders are hidden. Reload the page once you are back online.

How it compares

A handheld graphing calculator or a full maths package does more. This tool plots up to 5 curves and does not do tables of values, derivatives, integrals, regression, shaded inequalities or 3D graphs. Its key points are found numerically, so treat the 5-digit values as close, not exact, and check a suspicious one by zooming in. You can type an equation, drag a slider and send a link or an SVG without installing anything. The functions are evaluated in the browser, so what you plot is not sent anywhere.

Related Tools

Frequently Asked Questions