<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/github---mokshablr-gander-take-a-gander-at-any-file-offline-zero-permission-android-viewer-for-pd-3bwdzz8sr" -->

---
title: GitHub - mokshablr/gander: Take a gander at any file....
description: Gander is a tiny open-source Android file viewer (about 15 MB APK) that renders PDF, Word, Excel, PowerPoint, photos, video, audio, Markdown, and code entirely...
canonical: https://daily.dev/posts/github---mokshablr-gander-take-a-gander-at-any-file-offline-zero-permission-android-viewer-for-pd-3bwdzz8sr
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: GitHub - mokshablr/gander: Take a gander at any file. Offline, zero-permission Android viewer for PDF, Word, Excel, PowerPoint, photos, video, audio, Markdown and code. | daily.dev
og:description: Gander is a tiny open-source Android file viewer (about 15 MB APK) that renders PDF, Word, Excel, PowerPoint, photos, video, audio, Markdown, and code entirely...
og:url: https://daily.dev/posts/github---mokshablr-gander-take-a-gander-at-any-file-offline-zero-permission-android-viewer-for-pd-3bwdzz8sr
og:image: https://api.daily.dev/og/posts/3bwdZz8sR.png
og:image:alt: GitHub - mokshablr/gander: Take a gander at any file. Offline, zero-permission Android viewer for PDF, Word, Excel, PowerPoint, photos, video, audio, Markdown and code.
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub - mokshablr/gander: Take a gander at any file. Offline, zero-permission Android viewer for PDF, Word, Excel, PowerPoint, photos, video, audio, Markdown and code.

**[Hacker News](https://daily.dev/sources/hn)** · 6 min read · 4 upvotes · 0 comments

## Summary

Gander is a tiny open-source Android file viewer (about 15 MB APK) that renders PDF, Word, Excel, PowerPoint, photos, video, audio, Markdown, and code entirely on-device with zero permissions, no internet access, no ads, and no tracking. It uses the Storage Access Framework and sandboxed WebViews with bundled JS libraries to handle Office formats offline. Features include pinch zoom, recent files with thumbnails, folder browsing via one-time system grants, in-document search, and full Material 3 support on Android 8.0+. Built 100% in Kotlin, it can be installed via sideloaded APK or tracked through Obtainium for automatic updates.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://github.com/mokshablr/gander>

## Community take

How the wider developer community reacted, aggregated from 1 discussion and 104 comments across hackernews (as of 2026-07-31).

**TL;DR:** The community is largely enthusiastic about Gander, a tiny offline-only Android file viewer, praising its privacy-first approach and snappy performance, while a significant side-thread debates whether Android's INTERNET permission actually provides meaningful isolation.

**Sentiment:** 65% positive · 25% mixed · 10% skeptical

**The case for**

- Commenters appreciate that it consolidates multiple file formats (PDF, DOCX, XLSX, Markdown, plain text) into a single 14 MB app with no network access.
- Users noted the app is noticeably fast at opening and closing PDFs compared to alternatives.
- The developer was praised for being responsive in the thread, fixing bugs (e.g., ODS mime type) in real time.
- Markdown preview and proper plain-text wrapping were called out as thoughtful UX touches.
- Availability via Obtainium from GitHub was seen as a good interim solution while F-Droid listing is pending.

**The pushback**

- Several commenters want store distribution (F-Droid or Google Play) rather than sideloading.
- The INTERNET permission bypass discussion raised doubts about whether 'no internet permission' is a meaningful privacy guarantee on stock Android.
- PPTX rendering was acknowledged even by the developer as the weakest point, with charts unsupported.
- The README's 'JDK 17 / platform 35' build requirement was initially misread as a runtime requirement, causing confusion.
- DOC (legacy Word) format is not supported, only DOCX, which could disappoint some users.
- No force-dark mode for document content itself, only the app UI.

**By community**

- hackernews (positive): Commenters are broadly enthusiastic about the app's privacy-first, lightweight design, with a lively but ultimately inconclusive side-debate about Android's INTERNET permission model.

**Hottest debate:** Whether omitting the INTERNET permission on Android actually prevents data exfiltration, given Intent-based, sharedUserId, and ContentProvider bypass vectors.

**Open questions**

- Will the app be published to F-Droid or Google Play?
- Does the app support accessibility / screen readers for PDFs?
- Is RTF format on the roadmap?
- Can a force-dark mode be added for document content (not just the app UI)?
- Will ODT and ODP (OpenDocument text/presentation) formats be supported?

**Highlights**

> "I just asked Gemini, and it turns out that Mossad can steal my data anyways". - An app without the INTERNET permission will crash the moment you try to access the internet. It's like a rite of passage of every android developer with every new project, you forgot the permission. - Launching an Intent is EXTREMELY visible. It opens a full on browser. It's limited to a GET with a dedicated URL, so what are they going to do, stuff your data in query params ? - Even in the case of another app being installed that would silently receive this intent and not pop an activity, you need a different app. It cannot be an activity added by the same package. - Loading a Chrome Custom Tab opens a whole ass browser in front of you, think you're going to miss it ? - Shared user IDs also require two different app installations and you cannot declare multiple. You also cannot have sharedUserId if you do not sign the apps with the same key. you cannot sharedUserId with Facebook, you need once again a dedicated app installation. - A ContentProvider needs a dedicated permission on the writing app AND on the reading app, which is once again very visible. I'll add more to your list: an app can request to write a file inside your downloads folder, and another one can show a popup asking you to open it! And if someone shows up with a hammer at your door, he can also hit your fingers really hard to make you tell him the data. Android apps are, by default, very well isolated. INTERNET is a permission like any other, just not surfaced as a dangerous one (like permanent access to your background location would be), or a runtime one (like access to your current location while the app is in foreground)
> — [well\_ackshually on hackernews](https://news.ycombinator.com/item?id=49122133)

> pptx by a mile. A slide is absolutely positioned shapes with a whole layout inheritance thing going on so the JS renderer ends up reimplementing a whole layout engine, and it gets you to "approximately right" and stops there. Charts I gave up on. docx was annoying in a different way. Bullets came out as junk characters for a while and I couldnt work out why. I then found that Word writes them as private use area codepoints in the Symbol font so unless you have that exact font you get some junk. I just map them back to unicode after the render. xlsx was the easy one, SheetJS does the hard part. On faithful though none of this is faithful the way LibreOffice is. Its more that "you can read the document and it looks roughly right" which is what I wanted out of an app of 14MB.
> — [mokshablr on hackernews](https://news.ycombinator.com/item?id=49121789)

> ods actually already works.. it goes through the same SheetJS path as xlsx and csv. But your question made me check properly and there's a bug... I never registered the OpenDocument mime type so Gander wont show up in the "open with" list when you tap a .ods. Opening it from inside the app works fine. Fixed in the manifest just now, it'll be in the next build. odt and odp dont work at all. odt is a fair ask.. its the same shape of problem as docx so it's doable. Less sure about odp though.. the pptx renderer is already the weakest part of this. And yeah, fewer apps on the phone was pretty much the whole reason I started building this.
> — [mokshablr on hackernews](https://news.ycombinator.com/item?id=49122479)

> Great. You built an excellent tool to solve a real-world problem: being able to open files on the fly without granting internet access and without having to install 400 MB bloated suites that track everything.
> — [chesscoachx on hackernews · 1 comments](https://news.ycombinator.com/item?id=49121537)

> The app is pleasingly very responsive. I don't think I've used anything else on Android that lets me open and close PDFs rapidly without getting bogged down. Nice!
> — [array4277 on hackernews](https://news.ycombinator.com/item?id=49123024)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=49119425) · 85 points · 104 comments

## Similar posts on daily.dev

- [F-Droid - Free and Open Source Android App Repository](https://daily.dev/posts/f-droid---free-and-open-source-android-app-repository-ymbnjrilx) · Hacker News · 0 upvotes · 0 comments

---

Tags: [#tech-news](https://daily.dev/tags/tech-news), [#javascript](https://daily.dev/tags/javascript), [#android](https://daily.dev/tags/android)

[View this post on daily.dev](https://daily.dev/posts/github---mokshablr-gander-take-a-gander-at-any-file-offline-zero-permission-android-viewer-for-pd-3bwdzz8sr)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"GitHub - mokshablr/gander: Take a gander at any file. Offline, zero-permission Android viewer for PDF, Word, Excel, PowerPoint, photos, video, audio, Markdown and code.","url":"https://daily.dev/posts/github---mokshablr-gander-take-a-gander-at-any-file-offline-zero-permission-android-viewer-for-pd-3bwdzz8sr","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/github---mokshablr-gander-take-a-gander-at-any-file-offline-zero-permission-android-viewer-for-pd-3bwdzz8sr"},"datePublished":"2026-07-31T08:39:58.936Z","dateModified":"2026-07-31T16:58:35.051Z","description":"Gander is a tiny open-source Android file viewer (about 15 MB APK) that renders PDF, Word, Excel, PowerPoint, photos, video, audio, Markdown, and code entirely...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/f92dc66bd0ae36d0f48ad544d6eddb91?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/f92dc66bd0ae36d0f48ad544d6eddb91?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/github---mokshablr-gander-take-a-gander-at-any-file-offline-zero-permission-android-viewer-for-pd-3bwdzz8sr","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"tech-news,javascript,android","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"GitHub - mokshablr/gander: Take a gander at any file. Offline, zero-permission Android viewer for PDF, Word, Excel, PowerPoint, photos, video, audio, Markdown and code."}]}
```

