Dialogs stay within short or zoomed windows and lock background scrolling. Keyboard sorting retains focus on the column header. The local-processing label keeps the shared shield/check icon.
The header uses EN / JA language targets with localized accessible names and Help titles; the version follows vMAJOR.MINOR.PATCH. The local-processing badge remains 完全ローカル処理 / Fully local processing.
A privacy-focused, single-HTML viewer for opening DBF files, inspecting field definitions and records, switching legacy text encodings, and reading DBT/FPT memo data without uploading selected files to a server.
GitHub Pages delivers the initial HTML. After it loads, selected files are read and processed locally on your device. The app does not upload the file contents.
- Inspect DBF structure — Review DBF version, update date, record count, field definitions, record size, header size, and language-driver information.
- Read records page by page — Only the requested page is materialized instead of expanding the entire DBF into JavaScript objects.
- Handle legacy text encodings — Switch decoding when text is garbled, including Shift_JIS / Windows-31J.
- Compare the same field across records — Use Previous record / Next record inside Cell Inspector, following the current page’s sort and deleted-row visibility.
- Read memo data when available — Attach matching
.dbt/.fptfiles by basename and load memo blocks on demand. - Review deleted records — Show or hide records marked as deleted without modifying the source file.
- Inspect and export what you see — Choose visible columns, sort the current page, open full cell values, and copy or save the current page as UTF-8 CSV.
- Work with multiple files — Open several DBF files in one session with status, errors, and displayed data isolated per file tab.
Just open the demo. No installation or account is required.
- Download
dist/index.htmlfrom this repository. - Open it directly in a current Chromium-based browser, Firefox, or Safari.
The repository also includes dist/index.self-extract.html, a self-extracting single-HTML variant that restores the readable standalone HTML in the browser before the app starts.
- Download or clone this repository.
- Double-click
build-standalone.baton Windows. - The build generates and verifies
dist/index.htmlanddist/index.self-extract.html. - Open either generated file directly from your device.
Python, Node.js, and a local web server are not required. The builder uses Windows PowerShell and the built-in tar.exe.
- Add one or more
.dbffiles. If the database uses memo fields, add the matching.dbtor.fptfile at the same time. - Review the file information and field definitions.
- Browse records with the paging controls. Change the text encoding if legacy text is garbled.
- Show deleted records when you need to inspect rows marked as deleted.
- Click a cell to inspect its full value. Use Previous record / Next record to move through the same field without closing the inspector. It stops at the first/last visible row on the current page. Memo content is loaded only when needed; Copy value becomes available after it finishes.
- Copy or save the current preview page as UTF-8 CSV.
Switching records or closing the inspector prevents an older memo result or error from replacing the current value. Changing pages, files or encoding closes the inspector.
CSV is available only after the current page finishes loading. It keeps the columns, rows, encoding, memo source and filename captured when export starts, even if you switch tabs or pages. Closing the source tab or starting a newer export from the same file cancels output that has not yet been handed to the browser.
The repository includes a workflow that builds the standalone HTML and deploys dist/ to GitHub Pages automatically.
- Push the repository to GitHub as
htmlapps-dbf-viewer. - Open Settings → Pages → Build and deployment → Source and select GitHub Actions.
- Push to
main, or manually run Deploy standalone app to GitHub Pages from the Actions tab. - After a successful deployment, the demo is available at
https://ttomohisa.github.io/htmlapps-dbf-viewer/.
Each push to main runs the repository checks, rebuilds the standalone files, and publishes the verified dist/ output when GitHub Pages is enabled.
.
├─ src/index.template.html # Application template
├─ app.config.json # App metadata, version, and build settings
├─ dependencies.json # Runtime dependency declarations
├─ dependencies.lock.json # Dependency lock metadata
├─ build-standalone.bat # Windows build entry point
├─ build-standalone.ps1 # Standalone HTML builder
├─ scripts/check-repository.ps1 # Repository/build verification
├─ dist/index.html # Readable single-HTML artifact
├─ dist/index.self-extract.html # Self-extracting single-HTML artifact
└─ .github/workflows/
├─ build-standalone.yml # Build validation
└─ deploy-pages.yml # Automatic GitHub Pages deployment
build-standalone.batRepository checks can also be run directly:
powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File .\scripts\check-repository.ps1The build/verification flow checks the dependency lock, generates the standalone artifacts, verifies unresolved placeholders and runtime-network restrictions, and builds/verifies the self-extracting variant.
Node.js 24 is required for regression checks. Run node tests/run-tests.cjs after building. Tests exercise source, readable HTML, the root distribution and the restored self-extract payload. After an intentional source change, copy the generated dist/index.html to dbf-viewer.html before the final repository check. Browser, clipboard, download and file-mode checks remain separate manual checks.
The generated standalone HTML includes a Content Security Policy with connect-src 'none'. Selected files are read through browser file APIs and stay on the device. The app does not require analytics, telemetry, an external API, or a runtime CDN.
The GitHub Pages version requires one initial request to load the HTML. After that, the files you select are processed locally by the app. For use with the network completely disconnected, open dist/index.html directly.
- Read-only: records and fields are not edited or written back.
.ndx,.mdx,.cdx, and other index files are not used.- DBF has many historical dialects; unknown field types are handled conservatively.
- Memo support targets common DBT/FPT layouts.
- CSV export covers the current preview page, not the full database.
DBF Viewer v1.0.1 does not bundle third-party runtime JavaScript libraries.
See THIRD_PARTY_NOTICES.md for format/project notices.
Bug reports and feature proposals are welcome through GitHub Issues. See CONTRIBUTING.md for development guidance.
Copyright © 2026 ttomohisa
Licensed under the MIT License.
