No Screenshots, Please!

2025-10-04

Home

Don’t send (just) a screenshot

When collaborating on code, reporting bugs, or doing pretty much anything that involves sharing textual information with others, screenshots are just about the worst option available.

Do this …

Alice: Hey, I ran into this error while trying to use your new library. Do you have any idea what I did wrong?

Traceback (most recent call last):
  File "/tmp/gen.py", line 9, in <module>
    main()
    ~~~~^^
  File "/tmp/gen.py", line 5, in main
    with open(source_path, mode="rt", encoding="utf-8") as source:
         ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 9] Bad file descriptor

… not this

Bob: Hey, I ran into this error while trying to your your new library. Do you have any idea what I did wrong?

Screenshot of a Python stack trace. This is the same error message from the previous section, despite being significantly harder to read on some displays.

Why are screenshots bad?

There are a bunch of drawbacks to screenshots that can be avoided by sending plain text. These are the biggest ones.

Accessibility

Well-made software generally allows users to customize how text is presented: its size, shape, and color can all be tweaked to make it as legible as possible. Images of text impose the sender’s legibility preferences on the receiver. That low-contrast editor theme may be great for one person, but impossible to read for another.

Beyond simple legibility, screen readers struggle with images. There’s a good reason alt text is so strongly encouraged for websites. If your recipient might possibly be relying on a screen reader or similar tech, don’t bother sending an image. Sure, you could populate the alt text, but at that point, why not just send the original text?

Tooling

While image support may be pretty robust for modern instant messaging services, email clients are not guaranteed to support images, and many development tools have no image support whatsoever. If you have easy access to the text, why not pass on that easy access to your intended recipient(s)?

Transcription accuracy

When an image is used to transmit text, the recipient must often transcribe that text. This is a flawed process: misreading the image or making a typo are both easy mistakes to make. Additionally, some glyphs are difficult, and sometimes impossible, to distinguish. Consider the Latin “p” (U+0070) and the Cyrillic “р” (U+0440). In many fonts that include both characters1, these will look identical. In turn, the recipient of a screenshot is very likely to incorrectly transcribe these as the same character. Similarly, proportional fonts may make it difficult to distinguish between two apostrophes and double quotes2. Only by sending the actual text (or a clumsy explanation alongside the screenshot) is this difference accurately conveyed.

Data size inflation

Plain text will almost always take less data to transmit than screenshots of that same text, even with extremely compressed images. This difference is often masked by high-speed connections, where the difference in transmission times is best measured in microseconds. However, when working with slow connections, the difference between downloading text and a screenshot of that same text quickly becomes a nuisance.

When are screenshots appropriate?

Screenshots are a tool, and like any other tool, they have their time and place: they’re great for conveying visual information like UI layouts, rendering bugs, colors, etc.


  1. On this site, “p” and “р” are distinguishable because Equity, used for most body text, does not include the Russian er character.↩︎

  2. I have relied on the similarity between two apostrophes and double quotes to present users with visually-correct information. COSMOS 4 disallows double quotes in some places, so '' (two apostrophes) must be substituted in where " (a double quote) would normally go. This distinction is meaningful, and nearly invisible in screenshots of that application.↩︎