Skip to main content

Bionic Reader

Read text with emphasis on the beginnings of words.

CI MIT license

Bionic Reader works with text streams, Markdown documents, and interactive shell sessions. It runs locally and keeps your words intact. Try different emphasis settings to find what feels comfortable; no reading-speed improvement is promised.

Bionic Reader emphasizes word beginnings.

Installation

Install with your package manager using the commands below. Homebrew installs prebuilt binaries; Cargo installs from crates.io. See installation details for channel availability, direct-download alternatives, and platform requirements.

Homebrew

brew tap arturoaviles/tap
brew trust arturoaviles/tap
brew install bionic-reader

Homebrew selects the matching prebuilt binary. See the Homebrew guide for updates, removal, and platform requirements.

Linux

# Debian / Ubuntu
curl -fL "https://github.com/arturoaviles/bionic-reader/releases/latest/download/bionic-reader-linux-$(dpkg --print-architecture).deb" -o bionic-reader.deb
sudo apt install ./bionic-reader.deb

# Fedora
curl -fL "https://github.com/arturoaviles/bionic-reader/releases/latest/download/bionic-reader-linux-$(rpm --eval '%{_arch}').rpm" -o bionic-reader.rpm
sudo dnf install --nogpgcheck ./bionic-reader.rpm

# Arch Linux
curl -fL "https://github.com/arturoaviles/bionic-reader/releases/latest/download/bionic-reader-linux-$(uname -m).pkg.tar.zst" -o bionic-reader.pkg.tar.zst
sudo pacman -U ./bionic-reader.pkg.tar.zst

Python and Node.js

# pip (in a virtual environment) or uv
pip install bionic-reader
uv tool install bionic-reader

# npm, Yarn, or pnpm
npm install --global @arturoaviles/bionic-reader
yarn add @arturoaviles/bionic-reader
pnpm add --global @arturoaviles/bionic-reader

Cargo

cargo install bionic-reader --locked

Yarn installs into the current project; run it with yarn bionic-reader. Package managers select the CPU architecture automatically. Linux release filenames use the native architecture query shown above. You can also download native binaries from GitHub Releases.

Application libraries

Install packages from PyPI, npm, or crates.io. The library APIs below share the CLI's local transformation engine. See the library guide for complete options, errors, and platform requirements.

Earlier CLI-only releases do not include the callable APIs shown below. The registry installation commands select the latest available release.

Python

The library API requires Python 3.11+. Install into your application's virtual environment:

python -m pip install bionic-reader
from bionic_reader import Reader

reader = Reader()
print(reader.render("Hello world", format="html", profile="balanced"))
print(reader.segments("Hello world"))

JavaScript

The library API requires Node 22+. Install into your application:

npm install @arturoaviles/bionic-reader

Initialize the bundled WebAssembly engine once:

import { createReader } from '@arturoaviles/bionic-reader';

const reader = await createReader();
console.log(reader.render('Hello world', { format: 'html', profile: 'balanced' }));
console.log(reader.segments('Hello world'));

CommonJS uses const { createReader } = require('@arturoaviles/bionic-reader') and awaits initialization in an async function. Browser bundlers select the browser loader. React applications can use BionicReaderProvider and BionicText from @arturoaviles/bionic-reader/react; see the React example for initialization and hydration.

Rust

Requires Rust 1.85.1+. Add the crate to your application:

cargo add bionic-reader
use bionic_reader::reading::{Options, Reader};
use bionic_reader::settings::OutputFormat;

fn main() -> Result<(), bionic_reader::Error> {
    let reader = Reader::new();
    let options = Options::default();
    println!("{}", reader.render("Hello world", OutputFormat::Html, &options)?);
    println!("{:?}", reader.segments("Hello world", &options)?);
    Ok(())
}

Formatted output requires an explicit ansi, plain, markdown, or html format. Text segments contain literal text and an emphasized flag for custom presentation. Calls use explicit settings and deterministic defaults; they do not implicitly read CLI configuration or terminal state.

The reader

bionic-reader read article.txt
cat article.txt | bionic-reader read

Scroll with the arrow keys or j/k, search with /, and press q to leave. Use ? for all shortcuts. Adjust emphasis while you read with +/-, or try settings interactively with bionic-reader preview.

The CLI

bionic-reader -t 'Make long passages easier to follow.'
cat article.txt | bionic-reader
bionic-reader --input-format markdown --style always < article.md

# Change the reading style.
bionic-reader --profile subtle -t 'A lighter touch.'
bionic-reader --fraction 0.6 --every 2 -t 'Choose your own emphasis.'

# Export HTML or Markdown.
bionic-reader --format html < article.txt > article.html
bionic-reader --format markdown < article.txt > emphasized.md

See bionic-reader --help and the usage guide for formats, profiles, safe terminal controls, and reader shortcuts.

Shell integration

Start a reading session with bionic-reader session. Known editors, pagers, and full-screen applications use passthrough. Inside a session, use bionic-reader off, on, or toggle to control emphasis, and exit to leave.

For automatic sessions, add one initializer to your shell configuration:

# ~/.bashrc
eval "$(bionic-reader init bash)"
# ~/.zshrc
eval "$(bionic-reader init zsh)"

Bash, Zsh, fish, shell completions, and seven framework adapters are covered in the shell guide.

Configuration

Save preferences in ~/.config/bionic-reader/config.toml, or beneath an absolute XDG_CONFIG_HOME:

profile = "balanced"
fraction = 0.5
emphasis = "bold"

Command-line settings override the file. See the configuration guide for all options and precedence.

Contributing

See CONTRIBUTING.md for development checks, BUILD.md for source builds, and RELEASE.md for release and package publication.

License

MIT.

Metadata

Release files for bionic-reader 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for bionic-reader 0.2.0
File Actions
bionic_reader-0.2.0-cp311-abi3-musllinux_1_2_x86_64.whl CPython 3.11 abi3 Linux musl 1.2+ x86-64 Details for bionic_reader-0.2.0-cp311-abi3-musllinux_1_2_x86_64.whl
bionic_reader-0.2.0-cp311-abi3-musllinux_1_2_aarch64.whl CPython 3.11 abi3 Linux musl 1.2+ ARM64 Details for bionic_reader-0.2.0-cp311-abi3-musllinux_1_2_aarch64.whl
bionic_reader-0.2.0-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details for bionic_reader-0.2.0-cp311-abi3-manylinux_2_28_x86_64.whl
bionic_reader-0.2.0-cp311-abi3-manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64 Details for bionic_reader-0.2.0-cp311-abi3-manylinux_2_28_aarch64.whl
bionic_reader-0.2.0-cp311-abi3-macosx_11_0_x86_64.whl CPython 3.11 abi3 macOS 11.0+ x86-64 Details for bionic_reader-0.2.0-cp311-abi3-macosx_11_0_x86_64.whl
bionic_reader-0.2.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details for bionic_reader-0.2.0-cp311-abi3-macosx_11_0_arm64.whl

Total release size: 36.6 MB

Release files / bionic_reader-0.2.0-cp311-abi3-musllinux_1_2_x86_64.whl

Download URL bionic_reader-0.2.0-cp311-abi3-musllinux_1_2_x86_64.whl
Size 6.4 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
3388f72a7bfb962bfa45ebc110e81e5cb1f44e62950dfc11dfc3775db57dc1fa
BLAKE2b-256 checksum
How to use checksums
8978d2120b1d4afb4b1f36209150120a011a69b09c48f454288d0c706549353a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.

Transparency log

Release files / bionic_reader-0.2.0-cp311-abi3-musllinux_1_2_aarch64.whl

Download URL bionic_reader-0.2.0-cp311-abi3-musllinux_1_2_aarch64.whl
Size 6.3 MB
Tags CPython 3.11 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
833301c75c167e16bb601d5512d25eb47ef8bd45b8d64fe44b588a3c3186f887
BLAKE2b-256 checksum
How to use checksums
68fc489b0ca351d66e223762b2d68706672d7bcf25fd75588902d4dc058f91ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.

Transparency log

Release files / bionic_reader-0.2.0-cp311-abi3-manylinux_2_28_x86_64.whl

Download URL bionic_reader-0.2.0-cp311-abi3-manylinux_2_28_x86_64.whl
Size 6.3 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
46eefff7b8c2193ac6cb17a6576962778fb3e994547171a08399fef3e93f3ae7
BLAKE2b-256 checksum
How to use checksums
5d9c953bbb373498b5f1d080d91ef992375ad68fa2f29cbb1d182b7fee1b7565
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.

Transparency log

Release files / bionic_reader-0.2.0-cp311-abi3-manylinux_2_28_aarch64.whl

Download URL bionic_reader-0.2.0-cp311-abi3-manylinux_2_28_aarch64.whl
Size 6.3 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
ef1771cbabb1104d3c3c9992c1d3423bdeb9ade8821529cfcf782fa3e3c94ddc
BLAKE2b-256 checksum
How to use checksums
8de1fed19efa64d2a44f372df0f719c8b83f8dd7a4eac79ac85e4176752b08c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.

Transparency log

Release files / bionic_reader-0.2.0-cp311-abi3-macosx_11_0_x86_64.whl

Download URL bionic_reader-0.2.0-cp311-abi3-macosx_11_0_x86_64.whl
Size 5.7 MB
Tags CPython 3.11 abi3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
71a06f49fcb1fe60aae8391c3e18df9cac36659bcd9dcb5a0c67d207b55f83d4
BLAKE2b-256 checksum
How to use checksums
a996abb21cfb8fbacaf3d45e18a33c36fb33e92f56a01fcc94e4198958ba8469
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.

Transparency log

Release files / bionic_reader-0.2.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL bionic_reader-0.2.0-cp311-abi3-macosx_11_0_arm64.whl
Size 5.7 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
188836313fd5c41ffe9fa68fef20b498423c01045931c5c1da25889880d3da06
BLAKE2b-256 checksum
How to use checksums
26c78806dc0cd975e733a05134ebd78d5f4919099ea1640093f66088963df0c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.

Transparency log

Security for bionic-reader 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for bionic_reader-0.2.0-cp311-abi3-musllinux_1_2_x86_64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page