#terminal #tui #ratatui

tui-big-text

A Ratatui widget for displaying big text in the terminal

35 releases

0.8.1 Dec 27, 2025
0.8.0-alpha.0 Mar 2, 2025
0.7.3 Nov 2, 2025
0.7.0 Oct 25, 2024
0.2.1 Oct 27, 2023

#31 in Command-line interface

Download history 4490/week @ 2025-09-27 3196/week @ 2025-10-04 4461/week @ 2025-10-11 3382/week @ 2025-10-18 3346/week @ 2025-10-25 3215/week @ 2025-11-01 3213/week @ 2025-11-08 3075/week @ 2025-11-15 4050/week @ 2025-11-22 6005/week @ 2025-11-29 7495/week @ 2025-12-06 10880/week @ 2025-12-13 5935/week @ 2025-12-20 2090/week @ 2025-12-27 9726/week @ 2026-01-03 8708/week @ 2026-01-10

28,976 downloads per month
Used in 55 crates (49 directly)

MIT/Apache

115KB
1.5K SLoC

tui-big-text

A Ratatui widget to render gloriously oversized pixel text using glyphs from the font8x8 crate. Part of the tui-widgets suite by Joshka.

Demo

Crate badge Docs Badge Deps Badge License Badge Coverage Badge Discord Badge

GitHub Repository · API Docs · Examples · Changelog · Contributing

Installation

cargo add ratatui tui-big-text

Usage

Create a BigText widget using BigText::builder and pass it to render_widget. The builder allows you to customize the Style of the widget and the PixelSize of the glyphs.

Examples

use ratatui::prelude::{Frame, Style, Stylize};
use tui_big_text::{BigText, PixelSize};

fn render(frame: &mut Frame) {
    let big_text = BigText::builder()
        .pixel_size(PixelSize::Full)
        .style(Style::new().blue())
        .lines(vec![
            "Hello".red().into(),
            "World".white().into(),
            "~~~~~".into(),
        ])
        .build();
    frame.render_widget(big_text, frame.size());
}

The PixelSize can be used to control how many character cells are used to represent a single pixel of the 8x8 font. It has six variants:

  • Full (default) - Each pixel is represented by a single character cell.
  • HalfHeight - Each pixel is represented by half the height of a character cell.
  • HalfWidth - Each pixel is represented by half the width of a character cell.
  • Quadrant - Each pixel is represented by a quarter of a character cell.
  • ThirdHeight - Each pixel is represented by a third of the height of a character cell.
  • Sextant - Each pixel is represented by a sixth of a character cell.
  • QuarterHeight - Each pixel is represented by a quarter of the height of a character cell.
  • Octant - Each pixel is represented by an eighth of a character cell.
BigText::builder().pixel_size(PixelSize::Full);
BigText::builder().pixel_size(PixelSize::HalfHeight);
BigText::builder().pixel_size(PixelSize::Quadrant);

Pixel Size

Text can be aligned to the Left / Right / Center using the alignment methods.

BigText::builder().left_aligned();
BigText::builder().centered();
BigText::builder().right_aligned();

Alignment Example

More widgets

For the full suite of widgets, see tui-widgets.

License

Copyright (c) Josh McKinney

This project is licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

See CONTRIBUTING.md.

Dependencies

~6.5MB
~102K SLoC