NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #52 most downloaded on PyPI
Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal
Last release 5 months ago
12 Apr 2026
Release timing varies
gaps range from 8 days to 5 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
207 releases · first in 2019
Breaking change: Dropped support for Python3.8
A few fixes. The major version bump is to honor the passing of 3.8 support which reached its EOL in October 7, 2024
end parameter https://github.com/Textualize/rich/pull/4075Text.from_ansi removing newlines https://github.com/Textualize/rich/pull/4076FileProxy.isatty not proxying https://github.com/Textualize/rich/pull/4077No new features in this release, but there should be improved startup time for Rich apps, and potentially improved runtime if you have a lot of links.
No new features in this release, but there should be improved startup time for Rich apps, and potentially improved runtime if you have a lot of links.
One column per quarter.
Fixed a infinite loop in split_graphemes
Fixed a infinite loop in split_graphemes
cells.split_graphemes https://github.com/Textualize/rich/pull/4006Fixed solo ZWJ crash https://github.com/Textualize/rich/pull/3953
A fix for cell_len edge cases
Fixed issue with characters outside of unicode range reporting 0 cell size
Fixed issue with characters outside of unicode range reporting 0 cell size
Rich now has support for multi-codepoint emojis. There have also been some Markdown improvements, and a number of fixes. See the release notes below f
Rich now has support for multi-codepoint emojis. There have also been some Markdown improvements, and a number of fixes. See the release notes below for details.
Console instance is passed to pretty.install https://github.com/Textualize/rich/pull/3915Progress https://github.com/Textualize/rich/pull/3905UNICODE_VERSION environment variable https://github.com/Textualize/rich/pull/3930last_render_height property to LiveRender https://github.com/Textualize/rich/pull/3934Segment.split_lines_terminator https://github.com/Textualize/rich/pull/3938cells.cell_len now has a unicode_version parameter (that you probably should never change) https://github.com/Textualize/rich/pull/3930markdown.table.header and markdown.table.border styles https://github.com/Textualize/rich/pull/3942This release bumps Python compatibility to the just-released Python 3.14.
This release bumps Python compatibility to the just-released Python 3.14.
inspect on objects with unusual __qualname__ attribute https://github.com/Textualize/rich/pull/3894Live objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other chang
Live objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other changes.
typing_extensions from runtime dependencies https://github.com/Textualize/rich/pull/3763Panel title missing the panel background style https://github.com/Textualize/rich/issues/3569TTY_INTERACTIVE environment variable to force interactive mode off or on https://github.com/Textualize/rich/pull/3777Mostly updates to Traceback rendering, to add support for features introduced in Python3.11
Mostly updates to Traceback rendering, to add support for features introduced in Python3.11
We also have a new env var that I am proposing to become a standard. TTY_COMPATIBLE=1 tells Rich to write ansi-escape sequences even if it detects it is not writing to a terminal. This is intended for use with GitHub Actions / CI, which can interpret escape sequences, but aren't a terminal.
There is also a change to how NO_COLOR and FORCE_COLOR are interpreted, which is the reason for the major version bump.
TTY_COMPATIBLE to override auto-detection of TTY support (See console.rst for details). https://github.com/Textualize/rich/pull/3675NO_COLOR env var is now considered disabled. https://github.com/Textualize/rich/pull/3675FORCE_COLOR env var is now considered disabled. https://github.com/Textualize/rich/pull/3675Exception.add_note) https://github.com/Textualize/rich/pull/3676Optimizations to cell_len which may speed up Rich / Textual output https://github.com/Textualize/rich/pull/3546
Fix a broken regex that resulted in the slow path being chosen for some operations. This fix should result in notable speedups for some operations, su
Fix a broken regex that resulted in the slow path being chosen for some operations. This fix should result in notable speedups for some operations, such as wrapping text.
A hotfix for highlighting in the table, and a fix for Segment.split_cells
A hotfix for highlighting in the table, and a fix for Segment.split_cells
Table columns not highlighting when added by add_row https://github.com/Textualize/rich/issues/3517Fixed typing_extensions dependency
This version adds support for fine-grained information in tracebacks. In other words, it will highlight columns in tracebacks (for supported Python ve
This version adds support for fine-grained information in tracebacks. In other words, it will highlight columns in tracebacks (for supported Python versions). Here's an example:
<img width="1143" alt="Screenshot 2024-10-01 at 13 07 35" src="https://github.com/user-attachments/assets/d1405f90-4ae5-4fad-83ce-05c2e4542f4e">
This version also drops support for Python 3.7, which has long since reached its EOL. If you are stuck on Python3.7 for any reason, you will not be able to upgrade to this version, but nothing should break.
See below for other changes in this release.
Text.style now respected in Panel title/subtitle https://github.com/Textualize/rich/pull/3509Added support for Python 3.13 https://github.com/Textualize/rich/pull/3481
This is a fairly large update. Mostly an accumulation of small fixes and enhancements. Nothing qualifies as a *breaking change (for some definition),…
This is a fairly large update. Mostly an accumulation of small fixes and enhancements. Nothing qualifies as a *breaking change (for some definition), but there may be some subtly changes to output. Check below for anything that might affect you!
Table rendering of box elements so "footer" elements truly appear at bottom of table, "mid" elements in main table body.collections.deque https://github.com/Textualize/rich/pull/2864background_color of Syntax not including padding https://github.com/Textualize/rich/issues/3295Console https://github.com/Textualize/rich/issues/3419append_tokens https://github.com/Textualize/rich/pull/3471RichHandler errors and warnings will now use different colors (red and yellow) https://github.com/Textualize/rich/issues/2825Progress https://github.com/Textualize/rich/pull/2616FORCE_COLOR or NO_COLOR environment variables\x1b7) https://github.com/Textualize/rich/pull/3278/case_sensitive parameter to prompt.Prompt. This determines if the
response is treated as case-sensitive. Defaults to True.Console.on_broken_pipe https://github.com/Textualize/rich/pull/3468Updated the widths of some characters https://github.com/Textualize/rich/pull/3289
Fixes some character widths
name attribute to the Spinner class https://github.com/Textualize/rich/pull/3359Adds missing parameters to Panel.fit https://github.com/Textualize/rich/issues/3142
FloatPrompt.Mostly a meta update in readiness for the release of Python3.12
Mostly a meta update in readiness for the release of Python3.12
Markdown table rendering issue with inline styles and links https://github.com/Textualize/rich/issues/3115
Fixed Text.expand_tabs assertion error
Bugfix
Very minor update to URL highlighting
Very minor update to URL highlighting
~) not included in link regex when printing to console https://github.com/Textualize/rich/issues/3057https://textual.textualize.io/blog/2023/07/29/pull-requests-are-cake-or-puppies/
https://textual.textualize.io/blog/2023/07/29/pull-requests-are-cake-or-puppies/
<html> tag comes before the <head> tag https://github.com/Textualize/rich/issues/3021__eq__ https://github.com/Textualize/rich/issues/2875None to indicate that Console.tab_size should be used.Relaxed markdown-it-py dependency
Fixed typing extensions import in markdown https://github.com/Textualize/rich/issues/2979
Added support for tables in Markdown https://github.com/Textualize/rich/pull/2977
Markdown https://github.com/Textualize/rich/pull/2977Markdown https://github.com/Textualize/rich/pull/2977Fixed italic indent guides in SVG output
Fixed for is_terminal ignoring FORCE_COLOR https://github.com/Textualize/rich/pull/2923
is_terminal ignoring FORCE_COLOR https://github.com/Textualize/rich/pull/2923Just a new method on the Style class. A helper for Textual, you probable aren't going to need it.
Just a new method on the Style class. A helper for Textual, you probable aren't going to need it.
Reversed pre and code tags in base HTML format https://github.com/Textualize/rich/pull/2642
Mixed bag, mostly fixes
pre and code tags in base HTML format https://github.com/Textualize/rich/pull/2642Console(stderr=True) in rich.traceback.install to support io redirection.Text.from_ansi parserrich.progress.track() will now show the elapsed time after finishing the task https://github.com/Textualize/rich/pull/2659This release contains a fix for truecolor to eight bit color conversion, which results in more accurate colors.
This release contains a fix for truecolor to eight bit color conversion, which results in more accurate colors.
Fixed failing tests due to Pygments dependency https://github.com/Textualize/rich/issues/2757
encoding parameter in Theme.readv13.2.0 replaces the unmaintained commonmark library with markdown-it-py. This new parser has a lot more capabilities and will allow us to implement a
v13.2.0 replaces the unmaintained commonmark library with markdown-it-py. This new parser has a lot more capabilities and will allow us to implement a number of additional Markdown features in the future.
The output from the Markdown renderable may change a little from previous versions.
This release fixes tracebacks in Jupyter which didn't show the code.
This release fixes tracebacks in Jupyter which didn't show the code.
Additionally tracebacks have two new parameters to hide double underscore and single underscore locals. See the changelog for details
<img width="947" alt="Screenshot 2023-01-14 at 11 26 38" src="https://user-images.githubusercontent.com/554369/212469643-a6f80ccf-93cd-4970-90fd-eb0f384b4e28.png">
locals_hide_dunder=False to restore previous behaviour.Fix for an issue where Segment.split_cells produced the wrong result.
Fix for an issue where Segment.split_cells produced the wrong result.
Mostly a hotfix for the benefit of Textual.
Some relatively minor fixes and improvements. The most significant update (and the reason for the major version bump) is that Rich has dropped Python3
Some relatively minor fixes and improvements. The most significant update (and the reason for the major version bump) is that Rich has dropped Python3.6 support.
If you are a Python3.6 user and can't upgrade for whatever reason, pin to version 12.6.0.
pre and code tags in base HTML format https://github.com/Textualize/rich/pull/2642attrs library, that isn't confused by the presence of the attr library.locals_max_length parameter not being respected in Traceback https://github.com/Textualize/rich/issues/2649fileno made more robust. Fixes https://github.com/Textualize/rich/issues/2645fileno on FileProxy__repr__ results is now greedy when matching tags https://github.com/Textualize/rich/pull/2565progress.track now supports deriving total from __length_hint__pre and code tags in base HTML format https://github.com/Textualize/rich/pull/2642attrs library, that isn't confused by the presence of the attr library.locals_max_length parameter not being respected in Traceback https://github.com/Textualize/rich/issues/2649fileno made more robust. Fixes https://github.com/Textualize/rich/issues/2645fileno on FileProxyspinner_style argument in Console.status https://github.com/Textualize/rich/pull/2613.__repr__ results is now greedy when matching tags https://github.com/Textualize/rich/pull/2565progress.track now supports deriving total from __length_hint__Nothing published for this version
NOTE: 12.6.0 may be the last version to support Python3.6. The next version will be 13.0.0, and will be Python3.7+
NOTE: 12.6.0 may be the last version to support Python3.6. The next version will be 13.0.0, and will be Python3.7+
FORCE_COLOR env var https://github.com/Textualize/rich/pull/2449max_depth argument to be passed to the install() hook https://github.com/Textualize/rich/issues/2486None as name in __rich_repr__ for tuple positional args https://github.com/Textualize/rich/pull/2379font_aspect_ratio parameter in SVG export https://github.com/Textualize/rich/pull/2539/filesTable.add_section method. https://github.com/Textualize/rich/pull/2544mode property on file wrapper breaking uploads via requests https://github.com/Textualize/rich/pull/2495ensure_ascii https://github.com/Textualize/rich/pull/2538Layout class https://github.com/Textualize/rich/pull/2540Nothing published for this version
Nothing published for this version
Fixed missing typing extensions dependency on 3.9 https://github.com/Textualize/rich/issues/2386
Environment variables JUPYTER_COLUMNS and JUPYTER_LINES to control width and height of console in Jupyter
JUPYTER_COLUMNS and JUPYTER_LINES to control width and height of console in JupyterBox style, MARKDOWN, for rendering tables ready to copy into markdown filesinspect will prefix coroutine functions with async defStyle.__add__ will no longer return NotImplementedinspect when docstrings contain some special control codes https://github.com/Textualize/rich/pull/2294show_header=False https://github.com/Textualize/rich/pull/2330Capture contexts and Console(record=True) https://github.com/Textualize/rich/pull/2343Segment.split_and_crop_linesAdded clipping per line to SVG output to avoid box characters overlapping
Further tweaks to SVG character matrix
Removed excess margin from SVG, tweaked cell sizes to better render block characters
A fix and further enhancements to the SVG export.
A fix and further enhancements to the SVG export.
Default color scheme is now dimmed Monokai, and there is a keyline around the terminal so it looks distinct against a dark background.
This release has a major change to the SVG export. It is now a simpler design, and will render outside of a browser.
This release has a major change to the SVG export. It is now a simpler design, and will render outside of a browser.
<img width="1387" alt="Screenshot 2022-05-07 at 15 57 54" src="https://user-images.githubusercontent.com/554369/167259817-4ecd292a-6ce0-4a3e-a3b5-65bd00837e4e.png">
padding to Syntax constructor https://github.com/Textualize/rich/pull/2247rich.progress.open forward the name of the internal handle https://github.com/Textualize/rich/pull/2254padding to Syntax constructor https://github.com/Textualize/rich/pull/2247Ability to change terminal window title https://github.com/Textualize/rich/pull/2200
_rich_traceback_omit = True in their local scope https://github.com/Textualize/rich/issues/2207sys.__stderr__ on POSIX systems when trying to get the terminal size (fix issues when Rich is piped to another process)total=None on progress is now possible, and will display pulsing animationBumped typing-extensions minimum to 4.0.0
Progress.open and Progress.wrap_file method to track the progress while reading from a file or file-like object https://github.com/willmcgugan/rich/pu
end keyword argument to Text.from_markup https://github.com/Textualize/rich/pull/2095end keyword argument to Text.from_markup https://github.com/Textualize/rich/pull/2095Improve performance of cell_length https://github.com/Textualize/rich/pull/2061
As a major version there are a few breaking changes, see below.
This release drops Colorama as a dependancy in favour of an internal Win32 render.
There are some new features for progress bars, added support for pretty printing named tuples, and a bunch of fixes.
As a major version there are a few breaking changes, see below.
MofNCompleteColumn to display raw completed/total column (similar to DownloadColumn,
but displays values as ints, does not convert to floats or add bit/bytes units).
https://github.com/Textualize/rich/pull/1941Pretty https://github.com/Textualize/rich/pull/2031__init__.pyNothing published for this version
Nothing published for this version
Add support for US spelling of "gray" in ANSI color names https://github.com/Textualize/rich/issues/1890
rich.diagnose.report to expose environment debugging logic as function https://github.com/Textualize/rich/pull/1917Progress.get_default_columns() to get the default list of progress bar columns https://github.com/Textualize/rich/pull/1894rich.diagnose.report to expose environment debugging logic as function https://github.com/Textualize/rich/pull/1917Progress.get_default_columns() to get the default list of progress bar columns https://github.com/Textualize/rich/pull/1894Add Syntax.guess_lexer, add support for more lexers (e.g. Django templates etc.) https://github.com/Textualize/rich/pull/1869
Syntax.guess_lexer, add support for more lexers (e.g. Django templates etc.) https://github.com/Textualize/rich/pull/1869lexer parameter to Syntax.from_path to allow for overrides https://github.com/Textualize/rich/pull/1873__class__ https://github.com/Textualize/rich/issues/1838Syntax always justifies left https://github.com/Textualize/rich/pull/1872__class__ https://github.com/Textualize/rich/issues/1838Syntax.guess_lexer, add support for more lexers (e.g. Django templates etc.) https://github.com/Textualize/rich/pull/1869lexer parameter to Syntax.from_path to allow for overrides https://github.com/Textualize/rich/pull/1873__class__ https://github.com/Textualize/rich/issues/1838Syntax always justifies left https://github.com/Textualize/rich/pull/1872Note: as a major version bump, this version has some breaking changes. These changes won't affect many people, but we like to be strict about semver.…
The headline feature of this reach is vertical alignment in tables.
<img width="1255" alt="Screen Shot 2022-01-07 at 20 28 22" src="https://user-images.githubusercontent.com/554369/148678640-52d8c95a-3fb5-4f52-a46b-dafade4b6a45.png">
Note: as a major version bump, this version has some breaking changes. These changes won't affect many people, but we like to be strict about semver. See the release notes below.
vertical_align to Table.add_row https://github.com/Textualize/rich/issues/1590Syntax.__init__ parameter lexer_name renamed to lexerFixed @ not being escaped in markup
Fixed issues with overlapping tags https://github.com/willmcgugan/rich/issues/1755
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →