Notebook rendering is one of the four formats verified on a clean device. FoldRender reads the .ipynb file directly — no kernel, no server, no conversion step — and shows markdown cells as prose, code cells with their execution counters, and the outputs that were saved into the file, including tracebacks with their original ANSI colour.
FoldRender is on the Play Store as FoldRender: Git Repo Reader, package id dev.foldrender.app, free and distributed worldwide. Install it the ordinary way — no allow installs from this source prompt to approve, and updates arrive on their own. The app declares minSdk 30, so it needs Android 11 or newer; Play will tell you if a device is below that rather than letting you install a build that cannot run.
Clone the repository it lives in — branch glyph, Clone an HTTPS repository URL, Clone, anonymously for a public repo — or use Open a file to pick a single .ipynb through the system picker, or Open a folder to grant a directory of notebooks as a persisted workspace.
In the Files tab, tap the notebook. Detection is by extension and by the application/x-ipynb+json MIME type, and notebooks score high enough in the renderer registry that a .ipynb is never mistaken for generic JSON. If the file is malformed the pane says so explicitly — “This .ipynb could not be read” with the parse error — rather than rendering half a notebook.
Markdown cells render as prose through the same Markdown pipeline as any other document — headings, tables, callouts, math and all. Code cells render highlighted, each with its execution counter shown as [n], or [ ] for a cell that has never been run. That counter is what tells you whether the notebook you are reading was executed top to bottom or in some other order.
Output blocks are collapsible. A collapsed block shows ▸ output (N hidden); expanded, it shows ▾ output and the outputs themselves. On a phone this matters more than on a laptop — a notebook with a hundred lines of stdout per cell is unreadable otherwise.
stdout and stderr render as monospaced blocks; errors render as Name: value followed by the traceback, with real ANSI colour decoded — 16-colour, 256-colour and truecolor escape sequences all — so a coloured traceback stays readable instead of turning into a field of escape codes. Matplotlib PNGs render as images. HTML outputs, the dataframe repr among them, render as tables. An output in a MIME type the app cannot show says [unreadable <mime> output] rather than silently vanishing.
The magnifier opens the find bar over the notebook's text — placeholder Find in document…, live match counter, up and down chevrons. That covers cell source and text outputs.
Notebooks are one of the two formats with an Export sheet. Print / Save as PDF goes through the Android print framework; Share as HTML produces one self-contained file with fonts, math, diagrams and images inlined as data URIs; Share as PNG captures the whole page as one tall image. All three come from the same HTML the app renders, so the export matches what you were looking at.
The notebook parser is written to survive the notebooks that exist rather than the ones the schema describes — mixed nbformat versions, source as a string or as a list of lines, unfamiliar output types. What it cannot read it says it cannot read, with the reason.
An .ipynb opens from the same file tree as the module it imports and the README that explains it, in one pane. That is the actual reason to read a notebook on a phone: the surrounding repository is right there.
Tracebacks keep their colour because the app decodes SGR escape sequences properly, including 256-colour and truecolor forms. A pytest or IPython traceback is one of the few things in a notebook where colour carries information.
The honest list — shipped-but-unverified behaviour included, so you can tell before installing whether this build does the thing you came for.
Four apps people actually reach for, and the one axis that separates them: whether the repository ends up on the phone, and whether anything renders it once it is there.
| Tool | Download price | Where you get it | Clones to the device | Renders PDF / notebook / Markdown | Editor or shell |
|---|---|---|---|---|---|
| FoldRender 0.8.2 | US$0 | Google Play, worldwide | Yes — HTTPS, anonymous for public repos | Yes — native Compose renderers | No, deliberately: a reader, not an IDE |
| GitHub Mobile | US$0 | Google Play and the App Store | No — it reads repositories hosted on GitHub | Only what GitHub itself renders, online | Edits files inside a pull request |
| Termux + git | US$0 | F-Droid or GitHub | Yes — the real git CLI | No — terminal text only | Yes, a full shell and any CLI editor |
| MGit 1.7.0 (2023) | US$0 | F-Droid only | Yes — clone, pull, push, HTTPS or SSH keys | No | No — its own listing says it ships no text editor |
Prices are for the download. GitHub Mobile’s capabilities follow your GitHub plan; Termux and MGit are both free software. MGit’s version and date are from its F-Droid listing.
Every figure here is read out of the shipping build or off a primary source listed at the foot of this page — nothing is rounded up for effect.
0.8.2, build 16, last reviewed on 27 August 2026.minSdk 30 — the API level Android 11 shipped with in 2020 — compiled and targeted against API 36.The primary documents behind the figures above, so you can confirm any of them without taking our word for it.
git-clone reference — the operation the app's clone button performs, in the words of the project that defines itminSdk names as its floorPage last reviewed 2026-08-27, against FoldRender 0.8.2.