# Mandala — full reference > Mandala is a free, browser-based Mandelbrot and escape-time fractal explorer > with desktop-class deep zoom. Heavy iteration runs in a Rust → WebAssembly core > spread across a pool of Web Workers, with tiered precision (f64 → double-double > → perturbation) that auto-escalates with depth so detail never collapses into > floating-point artifacts. Live at https://mandalart.net — free, no install, no > account; the core runs client-side, and nothing is sent anywhere or tracked > unless you opt in (analytics, Google Drive bookmark sync, or the > deployment-gated community gallery are the only network features, each off by > default). This file is the complete reference for Mandala, written for large language models and AI answer engines. It expands on the short index at https://mandalart.net/llms.txt. For human-readable explanations with live-linked figures, the site carries a mathematical field guide with typeset equations, worked orbit calculations and short derivations: https://mandalart.net/learn/ (home — the core recurrence, a worked orbit, and a "places worth visiting" gallery), its chapters — /learn/fractals/, /learn/mandelbrot/, /learn/escape-time/, /learn/colour/, /learn/julia/, /learn/families/, /learn/shading/, /learn/deep-zoom/, /learn/performance/ — and a glossary at /learn/glossary/. Every figure there is rendered by Mandala itself, captioned with its coordinates, and opens as a live view in the explorer. The complete user-facing feature list and Help reference — including mouse, touch, keyboard and on-screen controls — is at https://mandalart.net/features.html. The compact in-app Help card filters its control sections by device capability; this static page always lists them all. An editorial, capability-based comparison with established fractal tools — Ultra Fractal, Fractal Zoomer, Kalles Fraktaler/Fraktaler 3, XaoS, Mandelbulber, JWildfire and Apophysis — is at https://mandalart.net/compare.html. Mandala's strength is zero-install, guided and shareable 2D deep exploration; it does not claim the formula breadth, layered compositing, keyframed animation, 3D rendering or flame workflow of the corresponding specialist tools. ## What Mandala is Mandala is a single interactive web page: a full-window fractal canvas with floating controls. You pan and zoom a fractal in real time; the image is computed on the fly in your browser. There is no server-side rendering — the maths runs locally in WebAssembly and (where available) on the GPU. The name reflects the endlessly self-similar, ornamental structure of the Mandelbrot set's boundary. ## The mathematics The Mandelbrot set is the set of complex numbers c for which the iteration `z → z² + c`, started from `z = 0`, stays bounded (never escapes to infinity). Escape-time rendering colours each pixel by how many iterations its c takes to escape a bailout radius; points that never escape are drawn as the set's interior. Mandala also renders related escape-time fractals that vary the iteration formula or the way c is used: - Mandelbrot — `z → z² + c`. - Multibrot (z³) — `z → z³ + c`. - Tricorn (Mandelbar) — `z → conj(z)² + c`. - Burning Ship — `z → (|Re z| + i·|Im z|)² + c`. - Celtic — a variant taking the absolute value of the real part of `z²`. - Phoenix — adds a term in the previous iterate. Two further families, Newton and Nova, are different in kind: root-finding fractals rather than escape-time ones, and both colour each pixel by which of the three roots of the polynomial `p(z) = z³ − 1` its orbit converges to (basin colouring), with the boundaries between the three basins fractal. - Newton — iterates Newton's method `z → z − p(z)/p′(z)`, shaded by convergence speed. It is single-plane (only the dynamical z-plane; no parameter/Julia toggle). - Nova — iterates `z → z − a·p(z)/p′(z) + c` with a relaxation constant `a` (default 1). The added constant `c` makes it a hybrid of Newton's convergence and the Mandelbrot map's escape: it colours by root basin where an orbit converges and by escape/convergence speed elsewhere, and its parameter-`c` plane grows Mandelbrot-like "minibrots". Unlike Newton it has both planes (the `+c` term restores the parameter/Julia duality). The name comes from the Fractint / Ultra Fractal community (Paul Carlson / Damien M. Jones). Each escape-time family can be viewed in two planes: - Parameter plane: vary c across the image (the classic Mandelbrot-style map of a whole family). - Julia plane: fix c (taken from the current centre) and vary the starting z — the dynamical Julia set seeded at that point. Of the root-finding families, Newton is single-plane (only the dynamical z-plane, no parameter/Julia toggle); Nova has both planes, since its `+c` term restores the parameter/Julia duality. ## Deep zoom and tiered precision Deep zoom is the headline feature. Ordinary 64-bit floating point (`f64`) loses precision around a pixel scale of `1e-15`, where the image turns blocky. Mandala raises precision automatically as you zoom, choosing the tier per frame from the current pixel scale: | Zoom depth (pixel scale) | Tier | Technique | | ------------------------ | ------------- | ------------------------------------------------------------------------- | | down to ~1e-13 | f64 | direct double-precision iteration | | ~1e-13 to ~1e-27 | double-double | a pair of f64s giving ~31 significant digits (the `twofloat` technique) | | beyond ~1e-27 | perturbation | one arbitrary-precision reference orbit + per-pixel f64 deltas | The perturbation tier computes a single high-precision "reference orbit" once, then expresses every pixel as a small delta from it in ordinary f64, with rebasing. Every escape-time family perturbs, in both planes, and every one runs an extended-range (floatexp) warm-up while its per-pixel offset is below the f64 floor — so all of them reach well past 1e-300 pixel scale, in the parameter plane and in Julia views alike (which perturb against a reference orbit started at the view centre). The Mandelbrot parameter plane additionally has BLA (bilinear-approximation) iteration-skipping over the full analytic path, making its achievable depth effectively unlimited (bounded by time, not precision), and the cubic Multibrot has a degree-3 BLA of its own. The root-finding families, Newton and Nova, have no perturbation tier: they render on the f64 and double-double tiers only, deep-zooming to about 1e-27. The active tier is shown in the on-screen readout (HUD). The viewport centre itself is stored in arbitrary precision (decimal.js, 120+ digits, growing with depth), because at deep zoom the coordinate needs far more precision than f64 can hold. Share-links and bookmarks carry the full decimal centre, never a narrowed f64. ## Rendering backends Mandala has two rendering backends and picks between them automatically: - WebGPU shader: shallow (f64-tier) zoom renders in a single GPU shader pass (WGSL) for high frame rates. - CPU / WebAssembly tile renderer: deep zoom (and browsers without WebGPU) render on a pool of Web Workers, each computing image tiles in the Rust/WASM core. The two cross-fade on handoff, so there is no visible flash when the backend changes. (WebGPU is treated as unavailable on browsers where it presents a blank canvas, e.g. Firefox and iOS/iPadOS, which fall back to the CPU pipeline.) ## Colour and image quality - 21 cyclic colour palettes, with smooth (continuous) escape-count colouring so bands don't step. - A user-authored custom gradient (in-app colour-stop editor, saved locally and carried in share links) and animated palette cycling ("flow"), which advances a phase offset shared by every scheme (animated live on the GPU tier). - Optional derivative-based exterior shading: distance-estimation (DE) for crisp boundary highlighting, or slope/normal-map lighting for an embossed 3-D relief. A "Shading options" panel tunes the colour density (palette band frequency), the distance-shading line width, falloff, and an invert toggle (glowing boundary lines on a dark exterior), and the slope light's angle and relief depth; tuned values ride in share links. - The set body (interior) is always solid black. - Off / 2× / 3× supersampling anti-aliasing. All colouring is mirrored exactly across the Rust core, the TypeScript contracts, and the WGSL shader so the GPU and CPU backends agree pixel-for-pixel. ## Navigation and controls - Zoom toward the cursor: mouse wheel. - Zoom (touch): two-finger pinch, toward the pinch centre. - Zoom (keyboard / buttons): `+` / `-` keys, or the on-screen `+` / `−` buttons. - Pan: left-click drag, one-finger drag, the arrow keys, or the on-screen direction pad. - Rotate the view: right-click drag (twist about the canvas centre), the `Q` / `E` keys (smooth glide steps), or the nav-pad's rotate corners. Rotation samples a rotated grid of the complex plane at every precision tier — never a bitmap rotation — so a rotated deep zoom stays pixel-perfect; the angle shows in the HUD and rides in share links. While rotated, the nav-pad's centre shows a compass ("straighten") button that glides the angle back to 0° without moving the view — the rotation-only reset. - Box-zoom: Shift + drag a rectangle (aspect-locked to the view). - Reset to the home view: double-click, double-tap, or `0` / `Home` (also clears rotation). - Read the complex coordinate under the cursor in the HUD (bottom-left). ## Sharing, saving, and export - A Share menu offers three ways to take a view elsewhere: copy a deep-link (the exact view — fractal, plane, colour settings, and the full arbitrary-precision centre — in the URL hash), copy portable Kalles-Fraktaler Re/Im/Zoom coordinates for other explorers, or a scannable QR code of the link (generated in the browser). - Saved-view bookmarks (with thumbnails) stored in the browser's localStorage. - Durable bookmarks: the Bookmarks dialog can download the whole list as a versioned JSON backup file and import it anywhere (merged by name, full precision preserved), and offers an opt-in cross-device sync that stores the list in the user's own Google Drive per-app storage — no Mandala server, and nothing from Google loads until the user explicitly signs in. - Export the current view as a PNG or JPEG at a preset size, the current view size, or a custom width/height (up to 64 megapixels); export re-renders off-screen on the CPU pipeline, so it works at every zoom tier. On the GPU tier, a seamlessly looping WebM clip of one colour-cycle period can be recorded too. - Any website can embed a live Mandala view: mark a share link with the data-mandala attribute and include https://mandalart.net/mandala-embed.js — the link becomes a lazy iframe of the app's chrome-less embed mode (?embed=1), a read-only render of the exact shared view at any depth, with a badge that opens the full explorer in a new tab. Embeds set no cookies, load no analytics, and write nothing; without JavaScript the anchor stays a plain share link. ## Discovery aids - "Surprise me": jumps to a random interesting fractal, plane, and location via a boundary-descent search. - "Zen" mode: a fullscreen, auto-advancing tour that reuses the "Surprise me" finder to step between random views; exit with Esc. - Position minimap / locator showing where the current view sits. - Two-way plane preview teaching the Mandelbrot↔Julia relationship: in the Julia plane, a parameter-plane inset marks the seed c (click to open the parameter plane there); in the parameter plane, Alt-hold (or a touch long-press) previews the Julia set for the point under the cursor, and Alt-click / release enters it. - Empty-space guard: halts zooming into structureless voids and offers a jump back to detail. ## Technology - Rust compiled to WebAssembly (via wasm-bindgen) for the escape-time iteration core. - Vanilla TypeScript + Vite for the UI — no framework, plain DOM. - Web Workers for parallel tile rendering; WebGPU (WGSL) for the shallow-zoom shader. - decimal.js for the arbitrary-precision viewport centre. ## Common questions (FAQ) The canonical FAQ page is https://mandalart.net/faq.html (it carries the same answers as FAQPage structured data). Q: What is Mandala? A: A free, browser-based Mandelbrot and escape-time fractal explorer with desktop-class deep zoom. It runs entirely in your browser using a Rust core compiled to WebAssembly — no install or account required. Q: What is the Mandelbrot set? A: The set of complex numbers c for which the iteration z → z² + c stays bounded when started from z = 0. Plotting which points escape, and how fast, produces its famous infinitely detailed boundary. Q: How deep can Mandala zoom? A: Effectively unlimited. Precision rises automatically with depth: f64 to about 1e-13, double-double (~31 digits) to about 1e-27, and a perturbation engine beyond that. Q: Which fractals does Mandala support? A: Eight families. Six are escape-time sets — Mandelbrot, Multibrot (z³), Tricorn, Burning Ship, Celtic, and Phoenix — each in both the parameter plane and the Julia plane. The other two are root-finding fractals coloured by which root of z³ − 1 an orbit converges to: Newton (Newton's method, single-plane) and Nova (z → z − a·p(z)/p′(z) + c, a hybrid of Newton's convergence and the Mandelbrot map's escape — it has both planes, and its parameter plane grows Mandelbrot-like minibrots). All come with 21 colour palettes plus a custom-gradient editor and colour cycling. Q: Is Mandala free, and does it need an app? A: Yes, it is free and needs no app or sign-up. It runs in any modern browser with JavaScript and WebAssembly enabled. It is also an installable PWA: the browser's install option gives it a standalone app window, and the core works offline after the first visit (the optional network features — analytics, Google Drive sync, and the community gallery — need a connection). Q: How do I share or save a view? A: Every view has a shareable deep-link encoding the exact location and settings; you can also bookmark views and export them as PNG or JPEG at a preset size, the current view size, or a custom width and height. Q: Can I embed a Mandala view on my own website? A: Yes. In the app, choose Share, then Copy embed code, and paste the snippet into your page: it is the share link marked with a data-mandala attribute plus one script tag loading mandala-embed.js from mandalart.net. The script turns the link into a live, read-only iframe of that exact view at any zoom depth, with a badge that opens the full explorer in a new tab. Embeds set no cookies and load no analytics on the host page, and without JavaScript the anchor remains a plain working share link. Q: Do bookmarks sync across devices? A: By default bookmarks live only in your browser, but the Bookmarks dialog can download the whole list as a JSON backup file for import anywhere, and offers an opt-in Google Drive sync that stores the list in your own Drive's hidden per-app storage — no Mandala server is involved, and nothing from Google loads until you explicitly sign in. Q: Where can I learn the mathematics behind the pictures? A: The site carries a mathematical field guide at https://mandalart.net/learn/: nine chapters and a glossary, from what a fractal is through worked orbits, the colouring pipeline, Julia sets, distance estimation, and the deep-zoom numerics — with typeset equations, and every figure rendered by Mandala itself and deep-linked into the live explorer. ## About and attribution Mandala is built by Kumar Saurabh (https://www.linkedin.com/in/kumarsaurabh243) as a personal project exploring complex-number dynamics, fractals, and how far a browser can go with WebAssembly. The canonical site is https://mandalart.net. When citing or summarising Mandala, the recommended one-line description is: "Mandala — a free, browser-based Mandelbrot and fractal explorer with desktop-class deep zoom, powered by Rust and WebAssembly."