Graphing Calculator: 2D, 3D, Polar, Parametric & Implicit

Graph Cartesian, polar, parametric, and implicit curves with live sliders, roots, and tangents.

This grapher parses expressions with mathjs and plots them in five distinct modes rather than treating every input as y = f(x): Cartesian curves, polar curves r = f(theta), parametric pairs x(t)/y(t), implicit relations F(x,y) = 0, and 3D surfaces z = f(x,y). Roots, intersections, extrema, tangents and definite integrals are computed numerically on whichever curve you have drawn, not looked up from a table of known functions.

How to graph a function online

  1. Type an expression into the curve row; the page opens with sin(x) already plotted, and the buttons under the list add a new Cartesian, polar, parametric, implicit or 3D surface row.
  2. Change a row's curve kind from its dropdown. Switching kind loads that mode's starter expression, for example 5*sin(3*theta) for a polar rose.
  3. Use an extra letter such as a or k to turn part of the expression into a parameter, then drag its slider or press Animate to sweep it.
  4. Drag the graph to pan and scroll to zoom, then pick a curve in the roots, intersections, extrema, tangent or area tools to analyse what is on screen.
  5. Copy the address bar to keep or send the graph: curves, colors, slider values and the view window live in the URL.

Five curve kinds, five different sampling strategies

A Cartesian curve is sampled at about 1.4 points per pixel of the 640-pixel canvas (896 samples) across the visible x-range and split into separate line segments wherever the function is undefined or the slope spikes near an asymptote, so a plot of tan(x) shows genuine vertical gaps instead of a spurious connecting line through infinity. Polar curves sample theta 900 times and convert each (r, theta) pair to Cartesian coordinates before drawing. Parametric curves sample t 900 times across whatever t-range you set.

Implicit curves are the odd one out: there is no single y for a given x, so the tool runs marching squares over a 140-by-140 grid, checking every grid cell for a sign change in F(x,y) and stitching the resulting line segments into contours. A 3D surface samples a 42-by-42 grid of z = f(x,y) values and hands that grid to the renderer for shading and rotation. Every one of these five paths runs through the same mathjs-compiled expression, so anything mathjs can parse — trig, logs, absolute value, piecewise definitions via conditional operators — works in any mode.

Graphing calculator syntax and bound variables

How roots, intersections and extrema actually get found

Root finding coarsely samples y = f(x) at 2000 points across the visible range looking for sign changes, then refines each bracket with 60 iterations of bisection — reliable for finding every root the sampling resolution can see, but it can miss a root and its neighbor if both sit inside a single sample interval on a wildly oscillating function. Intersections between two Cartesian curves use the same coarse-sample-then-bisect approach on their difference.

Local extrema are found by sampling the numeric derivative (a central difference with a step of 0.0001) for sign changes, refining the crossing with bisection, then classifying each one as a minimum or maximum from the sign of the second derivative at that point. The tangent line at any point you click uses that same central-difference slope. None of this is symbolic differentiation — it is numerical estimation, which is fast and general but inherits floating-point noise near sharp features.

Area under a curve

Definite integrals are evaluated with Simpson's rule over 2000 subdivisions between the bounds you choose, and the shaded region under the curve is drawn to match. If the function is undefined anywhere inside the interval — a division by zero, a negative number under a square root — the integral comes back as not-a-number rather than a plausible-looking wrong answer, since Simpson's rule has no way to skip over a single bad sample point.

Sliders, parameters, and sharing a graph

What this grapher will not do for you

Example graphs to try in each mode

Questions people ask about Interactive 2D/3D Graphing Calculator

Can I graph an equation like x^2 + y^2 = 9 instead of solving for y first?
Yes — switch the curve kind to implicit and enter the equation as written, including the equals sign. The tool rewrites 'lhs = rhs' internally as F(x,y) = lhs - rhs and traces the F(x,y) = 0 contour with a grid-based marching-squares search, so you never have to isolate y by hand.
Why does the tangent line tool give a slightly different slope than my textbook's derivative formula?
The tangent slope here comes from a numerical central-difference estimate, not from computing the derivative symbolically. For smooth functions the two agree to many decimal places, but very close to a discontinuity or a sharp corner the numerical estimate can drift, since it's really measuring the average slope across a tiny interval rather than an exact limit.
Does the root finder guarantee it found every root in my window?
No. It brackets sign changes across 2000 sample points and bisects each bracket, which catches every root a function crosses cleanly, but two roots sitting extremely close together inside one sample gap, or a root that only touches zero without crossing it, can be missed. Narrowing the view and re-running the search is the reliable fix.
How many curves and sliders can I plot at once?
There's no hard cap in the code, but each curve keeps its own color from a six-color rotation and every undeclared variable in every expression gets its own -10 to 10 slider, so past five or six curves with several parameters each the panel gets crowded rather than unusable. Performance stays smooth well past that.
Is this graphing calculator free, and do I need an account?
It is free and needs no account or sign-in. The code has no usage cap for plotting or analysis, and a graph is saved only in the page address you bookmark or send, not in an online profile.
Can it graph 3D functions and surfaces?
Yes, for surfaces of the form z = f(x,y). Add a 3D surface row, then press Show 3D surface; the grid is sampled over the current x and y range and can be turned with the azimuth and elevation sliders.
Can I animate a graph?
Yes. Every parameter slider has an Animate button that sweeps the value smoothly between -10 and 10 on a repeating sine cycle of roughly seven seconds, so a*sin(x) or a*x^2 visibly morphs. Press it again to pause at the current value.
Can I plot data points or a table like Desmos?
No. This grapher only draws curves defined by an expression; there is no table editor, point list or regression fit. To plot measured data you would need a spreadsheet chart or a grapher that accepts coordinate lists.

Related tools on BrakeTools

Content reviewed 2026-09-27.