Introduction
Carbonyl embeds a full Chromium browser engine and renders web pages as text and block characters directly in the terminal. It supports CSS, JavaScript, WebGL, images, and video playback, making it a unique tool for browsing the modern web without a graphical display server.
What Carbonyl Does
- Renders full web pages including CSS layouts, JavaScript, and animations in the terminal
- Displays images using Unicode block characters and 24-bit color
- Supports WebGL content by rendering frames and converting them to text
- Handles navigation, scrolling, clicking, and keyboard input interactively
- Plays video and audio content within the terminal environment
Architecture Overview
Carbonyl patches Chromium's compositor layer to output frames as terminal escape sequences instead of GPU-rendered pixels. Each frame is converted from a bitmap into a grid of Unicode half-block characters with foreground and background colors. Input events are translated from terminal escape codes back into browser events.
Self-Hosting & Configuration
- Easiest to run via Docker:
docker run --rm -ti fathyb/carbonyl - Building from source requires Rust and the Chromium build toolchain
- Set the initial URL as a command-line argument
- Supports standard Chromium flags for proxy, user-agent, and other settings
- Works over SSH for remote browsing on headless servers
Key Features
- Full JavaScript and modern CSS support via the Chromium engine
- Image and video rendering using terminal color capabilities
- Sub-second startup time compared to headless Chrome approaches
- Interactive mouse and keyboard navigation
- Works over SSH sessions on remote machines without X11 forwarding
Comparison with Similar Tools
- Lynx / w3m — Text-only browsers without JavaScript or CSS support
- Browsh — Firefox-based terminal browser; Carbonyl uses Chromium and renders natively
- Headless Chrome — No visual output; Carbonyl provides an interactive terminal UI
- tmux + browser — Requires X11 forwarding; Carbonyl works in pure terminal mode
FAQ
Q: Does Carbonyl support JavaScript? A: Yes. It runs a full Chromium engine, so all standard JavaScript works.
Q: How does image rendering work? A: Images are approximated using Unicode half-block characters with 24-bit ANSI colors.
Q: Can I use it on a headless server over SSH? A: Yes. That is one of its primary use cases since it needs no display server.
Q: What are the system requirements? A: The Docker image is the easiest path. Building from source requires significant disk space for the Chromium build.