Like other commenters point out, automatic OCR on Apple platforms is a godsend, and it's such a great use of our modern AI capabilities that it should be a standard feature in every document viewer on every platform.
Another thing I wish was more common is metadata in screenshots, especially on phones. Eg if I take a screenshot of a picture in Instagram, I wish a URL of the picture was embedded (eg instagram.com/p/ABCD1234/). If I take a screenshot in the browser, include the URL that's being viewed (+ path to the DOM element in the viewport). If I take a screenshot in a maps app, include the bounding coordinates. If I take a screenshot in a PDF viewer, include a SHA1 hash of the document being viewed + offset in the document so that if I send the screenshot to someone else with the same document, it can seamlessly link to it. Etc etc.
There are probably privacy concerns to solve here, but no idea is new in computer science and I'm pretty sure some grad student somewhere has already explored the topic in depth (it just never made it to mainstream computing platforms).
It feels like screenshots have become the de facto common denominator in our mobile computing era, since platforms have abstracted files away from us. Lots of people who have only ever used phones as their main computing devices are confused when it comes to files, but everyone seems to understand screenshots.
OCR is a godsend, 100% agree. Not a fan of the metadata idea personally, 'screenshotting' is done by the operating system, and exposing ways to allow apps to know that they were 'in' the screenshot plus expose some metadata of their choosing (like your examples of GPS coordinates for a maps app, url for browser) sounds like a privacy nightmare, and like something that will make a very reliable core feature much harder to use.
There are companies like Evernote/Zight/CloudApp that at one point tried some things like this, but they never really caught - I think because it's pretty easy to add annotations yourself or some note of your own - and a screenshot not "trying to do everything" is part of what makes them useful & ubiquitous.
deep linking allows apps to know/intercept known URLs and do "things". I don't know if the screenshot mechanism would involve this.
I do know that some things cannot be screenshotted. On macs this is any HDCP image on the screen (shows up as a blank rectangle). On android I believe some apps cannot be captured in a screenshot. Don't know about ios.
> 'screenshotting' is done by the operating system, and exposing ways to allow apps to know that they were 'in' the screenshot plus expose some metadata of their choosing sounds like a privacy nightmare
The apps don't have to know a screenshot was taken for this feature to exist; they could write into a passive "in case a screenshot is taken, use this as metadata" object data field that the OS uses when the user takes a screenshot
But apps (most notably Snapchat comes to mind) have been doing exactly that analysis though. Theoretically they could then [offer to] edit the photo immediately afterwards to add context, since they had access to the photo roll or files
https://android.stackexchange.com/a/119767
OP here. You raised a point that I should have mentioned in the article: screenshots of web pages that don't include the URL. I'm perfectly fine with screenshots of browser windows, since the context is almost always relevant. The system I work on right now puts a lot of useful context into the URL, but it's almost never included in the initial screenshot, so I have to ask for that. Of course, I generally ask for it as text so that I don't have to try to type the whole thing without making a mistake.
I was content to write the original off as "to each his own", but this one I feel you on.
Maybe the problem is sharing without caring and/or without being aware.
Case in point, folks capture large blocks of text as you mentioned and paste it into slack which converts certain characters unless included in a code block. This can be much worse than sharing a screenshot.
Please know the best way to share what you are sharing when you share. I've had to come to expect this request will not be honored.
I also might be guilty of not honoring sharing with caring myself. For example, I didn't read this entire thread before posting; others may have made this exact point already.
> It feels like screenshots have become the de facto common denominator in our mobile computing era,
Google/Apple have taken notice. Both have recently redone their full-screen post-screenshot UI to include AI insights / automatic product searches / direct chat with Gemini/LLM / etc.
Its true everyone uses screenshots to save things they are interested in or want to look up / search more of / save for reason and this UI is the perfect place to insert themselves.
Why? Either it's public content, and it can be traced back manually anyways (screenshots from social media posts typically include the username), or it's private content and knowing the URL slug doesn't change anything (the fact that you're sharing a screenshot of private content is the privacy breach, not the fact that some UUID is embedded).
Why spend electricity and time to read the text in a screenshot, and then more time making sure there are no mistakes. When the sender could have just copied the original text?
Interesting idea, but I think this understates how often screenshots are "slightly adversarial". I'm taking a screenshot because the app or webpage has deliberately made it hard to select text for some reason. Or the UI is just annoying about selection (e.g. trying to select the text from a link anchor without being considered as having clicked on it, which is fiddly on Android).
Then there's the question of fully adversarial screenshots. I can definitely see why people want "I want to send this to someone and discourage them from seamlessly resharing it", but at the same time: it's my screen. Not generally a problem on desktops unless you're dealing with video content.
All OCR is untrustworthy. But sometimes, OCR is useful. (And I've heard it said that all LLM output is a hallucination; the good outputs are just hallucinations that fit.)
A few months ago a warehouse manager sent us a list of serial numbers and the model numbers of some gear they were using -- with both fields being alphanumeric.
This list was hand-written on notebook paper, in pencil. It was photographed with a digital camera under bad lighting, and that photograph was then emailed.
The writing was barely legible. It was hard to parse. It was awful. It made my boss's brain hurt trying to work with it, and then he gave it to me and it made my brain hurt too.
If I had to read this person's writing every day I would have gotten used to it eventually, but in all likelihood I'll never read something this person has written ever again. I didn't want to train myself for that and I didn't have enough of a sampleset to train with, anyway.
And if it were part of a high-school assignment it would have been sent back with a note at the top that said "Unreadable -- try again."
But it wasn't a high school student, and I wasn't their teacher. They were a paying customer and this list was worth real money to us.
I shoved it into ChatGPT and it produced output that was neatly formatted into a table just as I specified with my minimal instruction ("Read this. Make a table.").
The quality was sufficient to allow us to fairly quickly compare the original scribbles to the OCR output, make some manual corrections that we humans knew how to do (like "6" was sometimes transposed with "G"), and get a result that worked for what we needed to accomplish without additional pain.
0/10. I'm glad it worked and I hope I never have to do that again, but will repeat if I must.
I disagree. I use screenshots all the time, because it:
- Preserves the full 80 character width without line-wrapping, which destroys readability
- Guarantees monospace, so tabular data doesn't get all misaligned
- Preserves a good coding font, so it doesn't come out as some hairline-width Courier on the other end
- Preserves syntax highlighting, very helpful
Obviously if somebody needs a whole file or whole log, then send the whole thing as an attachment. But very often I'll still include a screenshot of the relevant part. With line numbers, it's not difficult to jump to the right part of the attached file.
Screenshots are incredibly useful for keeping code and terminal output looking like code and terminal output, and not getting completely mangled in an e-mail or chat message being read on a mobile device or in a narrow column.
Key things required for posting to the chat: people reading can read it, people reading can copy and paste it, and people searching can actually find it. It doesn't need to exactly match what you might see in a text editor. Anybody wanting to look at the actual text in context won't be doing it in the chat, but will rather be opening the file of interest in the appropriate tool, and examining it that way; anybody stuck reading the text only in the chat is probably on their phone or something and will be best served by being able to easily see all of it.
For reading purposes, the question of screen width is best left to the reader. They will have the window set to their preferred width, possibly limited by screen size. If the text has to wrap, so be it. It's better that than having to try to squint at your 3713x211 screen grab on an iPhone (portrait orientation). Also bear in mind that even the most basic of font and colour choices (large/small font, dark/light mode) can cause accessibility issues for some readers.
For copying and pasting purposes, images suck. Yes, macOS can do it, sort of, and I expect Windows 11 can do it too, probably to about the same extent. But it's not as easy as having the text right there in copyable form.
For searching purposes, ditto - only worse, because at least when you copy and paste and it comes out wrong, you'll notice. When you search: you just won't find the thing. You'll never know.
Which is why screenshots help, for the reasons I gave
> people reading can copy and paste it
Why? If there's something like a user ID or error code that the person needs as text, I'll paste that separately. Stuff I include in a screenshot is for understanding, not copying and pasting.
> and people searching can actually find it.
Which is what the message text around the screenshot is for. Which actually includes the relevant keywords, not random tabular data or lines of code which just add noise to search.
> Anybody wanting to look at the actual text in context won't be doing it in the chat, but will rather be opening the file of interest in the appropriate tool, and examining it that way;
Except when they aren't/can't. The whole point of screenshots is for when they can't access something easily that way, which happens for a million different reasons.
> anybody stuck reading the text only in the chat is probably on their phone or something and will be best served by being able to easily see all of it.
Which is what images make far easier to read without being messed up.
> For reading purposes, the question of screen width is best left to the reader. They will have the window set to their preferred width, possibly limited by screen size. If the text has to wrap, so be it.
No it's not. Wrapping destroys indentation and alignment. It's not "so be it", it goes from readable to literally unreadable. I can't change the width of my phone or a lot of viewing areas. I can always scroll an image horizontally though.
> It's better that than having to try to squint at your 3713x211 screen grab on an iPhone (portrait orientation).
Which is why zooming and panning exist. I don't know where you're getting something silly like 3713 pixels though. But if that's the width of some massive table whose layout needs to be preserved, then so be it.
Which loses fidelity in your raster format screenshot world. Alternatively, when text is presented as text, a user can scale it independently for readability. Or as another commenter pointed out, use a screen reader.
You focus on a kind of permissions or network limitation technical access, between the computers in the system, but don't seem to appreciate another very real type of technical access between the user and the leaf computer in the system.
Others have made the basically the responses I would make myself, except for 3713 pixels being most of the width of a 4K display, and about the right number of pixels for the interesting part of the error list window in Visual Studio 2022.
You keep trying to frame that photo is superior, when, sure... The image is superior in your argument only when it's accompanied with text. So is it the image that is important then? No to mention, that is contingent. If that is your point, then, sure, I don't mind, add a screenshot next to the text but, please, give the text.
You're creating a strawman. Nobody is aruging that you send only a screenshot, devoid of context or explanation or any other text. That's absurd.
The point is, if you need to illustrate code or output then that part gets sent as a screenshot, to preserve readability. It provides extra details and context.
If you want the code or data in text format to dig in, then go get it from the files yourself, because you probably need a broader swath anyways. My message isn't a data repository. I'm including the screenshot so you can understand the issue easily, without having to open anything else.
I'm genuinely mystified by this entire conversation. I'm baffled by this idea of needing to take some example I'm sending in a screenshot and... copy and paste it into a text editor to edit it? Huh? What the heck?
Let me give you some examples that I saw in my professional life and make me angry enough that I am genuinely miffed you can't see this.
Here, check out this hash. Snip! Screenshot! Here, try this code snippet. Screenshot! Here, go to this absurdly long URI. Screenshot! Try configuring your XML this way. Screenshot! (Bonus point for underspecified location)
You're right, those sound idiotic. If someone sent me a hash I needed to look up in a screenshot, if they had access to the selectable text, or code to run, they need to have their head looked at.
But that's not what the blog post was about. It specifically showed a section of code that was having an issue. It's not meant to be copied and pasted, like all of your examples. It's meant to be an easily readable snippet that preserves formatting.
The only problem with the example in the blog post is that the sender didn't also say which file and line number the issue was in. But the screenshot itself is often very helpful, because many times the question can be answered without having to load up anything else.
I'm really assuming that people aren't sharing URL's by screenshot. I've been working in this field a long time and haven't encountered someone dumb enough to do that yet, knock on wood...
It's completely obtuse. "I'll include the important bits in a separate text as well, because I already know everything that the other person is going to find important."
> - Preserves the full 80-character width without line-wrapping, which destroys readability
Readability is on the eyes of the final user, they are free to use whatever narrow column width they prefer.
> - Guarantees monospace, so tabular data doesn't get all misaligned
When was the last time a computer shipped without a monospace font? This points at the rare occasion where there's a problem with the setup, but you could also argue that maybe there's a system with a broken image decompressor.
> Screenshots are incredibly useful for keeping code and terminal output looking like code and terminal output, and not getting completely mangled in an e-mail or chat message being read on a mobile device or in a narrow column.
Are you complaining about GMail's rendering maybe? Its awful[^0], but that's more of a GMail problem that could be solved if they wanted.
[^0]: Column width unbounded even on 4k monitors. Weird and inconsistent font sizes across different fonts (monospace is smaller). Reads poorly on phones too.
> Readability is on the eyes of the final user, they are free to use whatever narrow column width they prefer.
For plaintext sure. Not for code or tabular data. It destroys indentation and destroys column alignment and interleaves parts of rows. It's a horrid mess.
> When was the last time a computer shipped without a monospace font?
When was the last time I have to read something in a font I can't control that is forced to be proportional? Oh, constantly. Literally all the time.
> Are you complaining about GMail's rendering maybe?
Yes, and messaging clients, and chat clients, and everything unless it has actual dedicated code blocks that render with a horizontal scroll bar. Which are the exception as opposed to the rule.
> > Readability is on the eyes of the final user, they are free to use whatever narrow column width they prefer.
> For plaintext sure. Not for code or tabular data. It destroys indentation and destroys column alignment and interleaves parts of rows. It's a horrid mess.
I don't think I have seen unaligned html tables, nor unaligned spreadsheets made from CSV/TSV/etc. Images are worse than PDF, so I guess it's 0-stars in the 5-star data tier.
I'm not really sure what you're talking about. PDF...?
I'm talking about tables output in the terminal, in ASCII by SQL or something. By Python's tabulate. Output from a script. Or yes, even HTML tables or spreadsheet cells that get pasted into the message client as plaintext and lose their table formatting.
This isn't about a standard for publicly distributed open datasets, what are you on about? This is about quick messages in a chat or e-mail.
> even HTML tables or spreadsheet cells that get pasted into the message client as plaintext and lose their table formatting.
Sounds like a message client problem to me. You are switching to a worse data exchange format just to get around a very basic implementation of the paste API.
Pictures are a worse exchange format than the data even a PDF or CSV, which is why I mentioned the RDF data exchange tier list, not because I'm on hard drugs.
Is it convenient to send Images on whatever message client you use? Sure, but as a receiver of the data in a picture you can do nothing but type the data yourself (yeah, you can ask for the source too, but on async comm channels that may not arrive in the same day).
More often than not, you have no control over your client thanks to proprietary protocols and interop-hostile apps. So yes, it's a message client problem, but that fact doesn't change anything.
But at least text can be copy-pasted by the receiving user into a real text editor of their choice if there's an actual need to preserve tabular/indented/wide text.
That's an extra step that can be extremely difficult to do on mobile. I'm trying to make my messages clear immediately, not make the recipient jump through hoops. That's what good, clear communication is about.
All of the points are mostly personal and thus should never be forced on anyone else via a screenshot (as a general rule, though depends on the content)
- no line wrapping destroys readability more since you can't toggle it in a screenshot. Imagine that url on the screenshot taking 3 lines instead of 1 and pushing useful text off screen. Also, forcing 80 on a user of a wider monitor is barbaric.
- And if there is no tabular data (and autoformatted code doesn't do tabular code) you've just lost nice proportional text for nothing
- Syntax highlighting as is commonly used (and as is shown in the blog screenshot) is useless, and is anyway unlikely to match reader's convention
> being read on a mobile device or in a narrow column.
So it can't even be read properly, you have to scroll the screenshot left and right... instead of just reading
100% this. I fully disagree with the post - screenshots show context/colour/formatting etc that often doesn't even translate properly if you DO try to paste it into some IM or other "text swapping" application.
Sure, if you want someone to reproduce the text of course you'd send them actual text. But to show a problem, a picture is, as they say, worth 1000 words.
Most of the time if someone is sending me code as text (which is by far preferable to a screenshot) I'm copying it out and pasting it into my own editor.
That way I get a width appropriate for my screen (which may be different from yours), text that's still aligned correctly, and uses the font of my choosing (which may differ from yours), and still has syntax highlighting (using the sizes/colors/styles that I'm accustomed to).
Sending the whole file (or a link to it) works well too but screenshots are absolutely likely to be some level of annoying for anyone who isn't you no matter how helpful you think you're being.
Forcing someone else to view code the way you like seeing it isn't always going to be completely obnoxious for them (although you might be surprised by what some people find acceptable) but it does make it difficult/impossible to view it the way I like seeing it (in addition to losing the ability to search/edit)
> still has syntax highlighting (using the sizes/colors/styles that I'm accustomed to)
Where I work I find it's usually the youngins using a ridiculous light on dark color scheme that post screenshots of code. Are we still stuck in the '80s? And are they pining for a time they never experienced themselves? Computer hardware has been capable of displaying the more civilized and easier-on-the-eyes dark on light color schemes since then.
This isn't about sending 300 lines of code in a screenshot or something.
This is about, "hey, look at these 6 lines which is where I think the problem might be". It's not for pasting in a separate editor, why would you do that? It's about providing quick context even if you're on your phone.
If you want to go inspect that spot in the file once you're back at your computer then go do that. The screenshot is to save you time because often you can answer just based on it.
On my phone is exactly when I do want it, because that's where text linewraps and jumbles and becomes totally unreadable.
You understand you can just screenshot the code part that is 80 characters wide? You don't have to screenshot the entire full-screen window?
But even if someone does include extra width, it takes me about a tenth of a second to pinch-zoom. Which is way quicker than trying to decipher line-wrapped spaghetti.
> But even if someone does include extra width, it takes me about a tenth of a second to pinch-zoom. Which is way quicker than trying to decipher line-wrapped spaghetti.
Strong disagree there. It's far easier to read the line wrapped code than to pinch to zoom. I think you have your answer: you have different preferences than others do, and no amount of explaining is going to make their "I like cats" make sense to your "I like dogs" sensibilities.
> You understand you can just screenshot the code part that is 80 characters wide? You don't have to screenshot the entire full-screen window?
Why are you telling me, the recipient of the crappy text screenshot, how to do it better?
Line-wrapping is also agitating, I'll give you that. Or worse yet, if the sender doesn't know how to use monospaced fonts in whatever app. I prefer a scrolling text box, which is basically a "pre-pinch-to-zoom'ed" screenshot. But with copy and paste and select. Which is even more useful on the phone, because of its limited symbols, so I can pull the relevant part, modify it, and reply.
So do I. But most clients and message mediums don't have support for that. Many don't even have support for monospace at all. Hence, screenshots to get around those limitations.
I think slack and other mail/chat clients rescale the image and apply aggressive compression on it. Sometimes they even crop the image or make it so that you need to scroll left and right. Also your syntax highlighting might be annoying to others and might make legibility worse for the receiver, and as other people pointed out most chat/mail clients support monospace code blocks. Plus I agree with all the things that the blog post author pointed out.
> or make it so that you need to scroll left and right
That's the point.
If have an ASCII table that is 150 character columns wide, I'm sending you a screenshot so that you can scroll left and right, rather than have everything end up in a jumble of interleaved overflowing lines that turn into unreadable spaghetti.
This is a feature, not a bug. Not everyone is opening the message on a full-width monitor.
You can do the same with text. If your messaging client is lame and forces wrapping, copy and paste the text to a real text editor with left/right scroll and your font and color scheme and other preferences of choice.
My only use of code screenshot is to emulate the "take a look at my screen workflow". It's only meant for the other person to take a quick glance at. Anything further than that is transmitted as a code block or text file.
Yeah. OP has an egocentric bias - it’s not the norm in the world of work sharing that you can faithfully reproduce the live/contextual environment of the sender given the raw string.
(OP’s blog purports to be pertinent to freelance software development).
What about it? There simply isn't any information format that's both perfectly accessible and reproduces what you're seeing with perfect fidelity. In the happy path you can make the important parts match, but almost by definition, when someone's reporting an issue it's because what they "should" see and what they are seeing don't align.
There are many accessibility issues with using a screenshot of text instead of text directly:
- displaying a white background image of text when I'm using dark mode;
- using a small font to a user with a visual imparement or on a high DPI display;
- using a colour scheme with low contrast, or colours that are indistinguishable for people with a form of colour blindness;
- using a font that is difficult to read for someone with dislexia;
- etc.
And others have mentioned not being able to search for the text within the image, or select/highlight the text (useful for copying a function name, link, or term in the text, or for keeping track of where you are when reading).
Well, that's not the scenario relevant to the article and not a scenario I encounter much these days. I'm not a designer or a front end dev anymore so I rarely encounter a situation where "perfect fidelity" is relevant to me.
I'm biased, but I can't help but feel like chances are, if the screenshot is text, the content of the text is important, not the visual aspects.
99% of the time I get a screenshot these days, it's people sending me screenshots of text logs or code, and almost always cropped in a way that eliminates any context anyway. Give me plain text or give me death.
In some cases visuals are important, and in other cases, they're not. Hence why I said "chances are" and declared my bias rather than using absolutist language. However, somewhat ironically, you chopped off that part of my reply. I find it odd you chose to respond the way you did, but I digress.
I also carefully indicated my every day interactions with screenshots do not align with those requirements.
Of course there are situations where visual aspects are critical. I'm not disputing that. I'm stating my _preferences_ and my _opinion_ that situation is exceptional.
> Preserves the full 80 character width without line-wrapping, which destroys readability
How line wrapping interacts with readability is for the reader software to worry about, not the control-freak author. Line length higher than the device width can handle can be even worse for readability than lines wrapped in the wrong places. It's one of the reasons I loathe PDFs.
> Preserves a good coding font, so it doesn't come out as some hairline-width Courier on the other end
If the reader wants to have their code in hairline-width Courier, that's their right. It's not for the control-freak with awful taste in fonts to decide.
> Preserves syntax highlighting, very helpful
Forces a particular style of syntax highlighting upon the reader without giving them an easy recourse to change it. No thanks.
> Guarantees monospace, so tabular data doesn't get all misaligned
The closest thing to a decent argument. Except pretty much any text input that accepts embedded images will usually also provide a monospace formatting option, so there is no need to screenshot text here either.
It also allows drawing on top. I find it convenient to screenshot / take picture of some code / error log / terminal output then circle some bit, draw some arrows, or do other types of drawings to draw attention to things.
Emphasizing bits on code-formatted text is not as straightforward and would typically be ambiguous (was this punctuation meant for emphasis or was it part of the original text?).
Pictures are also quick to make and grasp, which is a plus when having to quickly diagnose something with others.
The main complaint in the article about having to type into a search bar instead of copying and pasting doesn't make sense. It's like a word or two at most which you'd have to search. It might even be faster to type than to copy and paste (moving cursor around, etc.).
The error log complaint would also be valid had it been text instead of a screenshot. That was a problem of not sharing enough context, not the format of the message.
It's not widely supported. It's not in e-mail or SMS or Gmail or Docs or Word or a hundred other pieces of software where I communicate.
Yes, I use that wherever it exists. It's great, and you're lucky when it's there. I wish it was everywhere. But as long as it's not, for everything else, there's screenshots.
SMS does not support images either, and email supports HTML. I'm not all that familiar with Word, but I believe it supports some formatting options too.
In my experience copying from some programs preserves long lines. Copying from other programs breaks them at the wrap point. Once the text is cut into lines, pasting can't fix it. I'm not at my computer now so I can't give factual examples. I guess that copying from the output of cat file on a terminal is one of those unfortunate cases.
> I guess that copying from the output of cat file on a terminal is one of those unfortunate cases.
It depends on the terminal. Some will actually preserve the line breaks vs soft wraps. Those terminals will reflow the text when you resize the window.
But if you already have the file you might as well run something like `xclip <file` to copy its contents directly to the clipboard.
I feel like I've seen good solutions to both problems before, aren't there vscode extensions that let you just select the code and create a sharable link with all the view type options to appear everyone?
Except it doesn't use my preferred font, not my don't size, not my colors and I can't copy parts of it as easily and then the stupid chat app scales the image for some reason ot another.
The ability to highlight/copy/etc text on Macs/iOS these days is such a killer feature. I use it almost every day, both for copying/translating text in screenshots or taking photos of text to then copy it into my notes later (eg school notice boards or event posters etc).
It gave me a "living in the future" feeling the day someone sent me a picture of a phone number through imessage. Barely thinking, I pressed on the phone number in the image and I was prompted to call it. It was like technology and primitive intuition teamed up to create that moment.
Yup - I recall when this feature was released, maybe a dozen years ago, with KDEConnect. Real QoL improvement. Glad to hear some other OS's are catching up.
Part of what makes it so good is that it's everywhere. Preview, QuickLook, QuickTime Player (yes, videos get OCR'd too!), any app that uses the system frameworks for displaying media.
This includes Safari, where not only do images (inline or otherwise) have selectable text, but the built in translator leverages that text and uses it to translate images, too! This is super useful for translating Japanese webpages in particular, which tend to have tons of text baked into images.
I have Shottr keyboard shortcut (cmd+opt+control+o) setup to allow me to OCR from whatever is on the screen and copy the text to clipboard.
So whether someone shares code or error log as screenshot on slack, it’s 3 steps: 1. cmd+opt+control+o 2. select the area to OCR 3. cmd+v in vscode or google
Spotlight, notes, and Photos also look at photos and return them in search result. Even going further where you can give a description and find it as well.
Screenshots of text! Luxury! In my day, the screenshots were embedded in a Word document too.
But I can't be the only one appalled at the suggestion to use an LLM to parse the text. The sheer, prodigious waste of computing power, just to round-trip text to an image and back to text, when what's really missing is a computer user interface that makes it as simple to send text or other snippets as it is to send screenshots.
It can get worse. People use their phones to send a literal photo of their screen. This happens almost daily in one of the programming discords I'm member of and it drives me crazy, these are supposed to be (future) programmers and they don't even know how to make a proper screenshot??
I knew an enterprise where Word documents were used as "folders" for Word documents. The "top" document would have a collection of files pasted in to them (the actual file objects, not just the file content).
My preference -- Link or attachment to the full document or code in context (if needed) ... along with screenshot of a relevant portion. (Many times the former is optional because there is enough context already.)
It is extra work to do both but I like to be through even when asking for help. Even if the other side doesn't need it -- because I myself might not remember all the nuances when I refer to that conversation later.
Also screenshot preserves (before any fixes) the exact way things looked when I confronted a certain situation. The visual of the screenshot serves as a much stronger reminder of that situation and my thinking ...way better than mere copy pasted text.
Pretty much every new programmer I’ve ever hired has done this in their first few weeks. Every time I have to tell them why it’s so unhelpful to share screenshots of text instead of just pasting the text. Usually they learn. When they don’t I usually end up firing them, not for that reason but for others.
The reason I personally hate it is I am often working from my phone. And it’s much easier to read text rendered properly than pinch zooming text in an image. What’s worse is slack will downgrade images for mobile and you can’t even pinch zoom in fully.
OP here. My current team uses MS Teams. I've been teaching my colleagues how to create code blocks in Teams (basically, teaching them Markdown). It's there, but it's not readily discoverable.
Teams has really poor code block compared to slack or any other tool. You can feel the arrogance of the Microsoft PM each time you paste code or paste text that randomly render as html. Somehow, slack still has a better text input compared to teams.
Thing is, screenshots are fast, and the same technique works across every app. If you work in a field where you might be filing trouble reports from web app A, native app B, website C,... its just easier to use the same technique across the board. Win+S or CMD Shift 4, and move on with your life.
Not nice for the recipient maybe, but hella efficient for everyone else, and there are many more people in the latter camp than the former.
I find the argument a bit weak. The actual problem is not the screenshot but the lack of information. Even if you got the "C:\Users\Paul\whatever\whatever" text pasted in your inbox, what would you do with it? Also, are you manipulating these text? If I'm asked to find a bug in some code, looking at it is all I can really do. (Okay maybe you want to compile it or run it, that's fair)
Don’t even get me started. A colleague of mine made me screenshot a .env on a video call “for security” and I spent 30 min correcting OCR on it until it worked
This article is a specific case of a more general piece of advice: ask questions well (provide context like clickable links, trim down your query to the minimal reproducible case, pose high-precision questions, etc.).
Qwen3-VL-8B is quite amazing and has made translating screenshots of text so much easier via LM Studio. Does have some issues and edge cases, but being able to take a screenshot of text or some website doesn't have copyable text, thats a solvable issue for less than 16GBs of VRAM or unified memory.
I saw it more and more recent times, but worse is coming:
With my teenage daughter ( and her friends ), I see that they even do not bother with screenshots, and take pictures by phone...
Agreed. Sometimes context comes from more screen, not less. I receive a lot of cropped screenshots that show the “problem” but hide the surrounding context, and they often exclude things that would make a solution immediately clear from a shot of the full application window.
Definitely true although my motive is more based on a principle of “don’t let people send me on a fishing trip”. I’m glad to help but people need to learn the proper way of asking without completely inconveniencing the other person
If I don’t know you, sure. The source of this usually comes from a teammate via a chat app (slack, teams) or email. In that context, I’m telling them concisely “I don’t have enough information to help you”. Tell me more. Figure out how to ask for help in a better way. Conciseness shouldn’t be assumed as rude when you have a working relationship with the other person and it’s obtuse precisely because they need to fill in the gaps, not me.
Me and my teammates regularly get by on one word responses. Nobody interprets it as rude, we’re all busy and don’t get our feathers in a bunch over this kind of stuff. If someone did, they’d need coaching not the other way around.
We were taught manners as children and they go a long way. You can still be concise while being polite, and friendliness is still appreciated by people you work with regularly and know well.
Your example: “I don’t have enough information to help you.”
8 words in length, it gives the impression of closure. There isn’t enough information, therefore I can’t help.
“Can you send the code link so I can help more?”
11 words in length, it not only adds actionable instructions to help rectify the lack of information, it also signals your intention to be a good collaborator and provide some kind of path forward.
Two more words gets you all that. That’s amazingly efficient (I.e., concise).
“We’re all too busy to be nice” is how you end up with everyone
Agreed! The one that I really don't like is that social platforms promote / prefer screenshots of text. Search engines promote sites that link to themselves. All the good parts of URLs are missing. How often I see something interesting, just to realize it's a screenshot and I have to go dig around myself figuring out where it came from.
> I receive a lot of screenshots like this from well-meaning colleagues:
That says all you need to know. The reason they send those screenshots is they believe the full context is more helpful. Code formatting, indentation etc.
Personally I agree with that sentiment. There is a lot of context in the full visual of the original text in situ.
I’m have a growing collection of photos of handwritten notes that are texted to me to address. As irritating as that is, it’s better than the thing that happens in universities, where people email you PowerPoint files with the content being the text that should have been in the email.
Maybe I should put the photos of notes into a PowerPoint?
I just want to offer a counter ti the comments that, I really don't mind!
If it's some new greenfield project, I definitely want a script rather than a screenshot, but if you're saying "i think this line is the issue", "here's my error stack" or "what if we added something here?" then I'll happily recieve screenshots if it's easier for you!
(just please, please, semd me something and not just "there's am issue with x because it is throwing me an error")
We use Slack and GitHub, so it's trivial to send formatted text or a file/line link and I basically never have to deal with screenshots of text. I guess this is just a nice reminder for me to be grateful.
Screenshots preserve exactly what the user sees, and for this reason i believe they are the best format for evidence. They also preserve their look when your messaging software starts doing funny things with it. They are immune to accidental edits. They are reliable in the sense that if the original source ever changed, no one would argue that you didnt see what you saw with a screenshot. They wont degrade when the content of a url changes.
We do use screenshots extensively, but alongside links and copied text when necessary
I agree that screenshots of text that are cut off from essential context are enough to make me pull my hair out, it creates so much extra work— but the modern feature of automatic text recognition in screenshots and images that allows for copy and paste has been incredible. Along with indexing that allows it to be searched, regular screenshots have become one of the most robust and future proof ways for me to preserve context from my workspace. When I look back into archived screenshots it helps me to recapture all kinds of things that I wouldn’t have thought to explicitly record.
OMG me too. I know we aren't supposed to add low quality comments like that, but I have actually been waiting my whole life for someone else to say this!
Just use something like NormCap ( https://dynobo.github.io/normcap/ ), an "OCR-powered screenshot tool to capture text instead of images".
Often, the screenshot of the code is exactly what I need, because it shows code syntax highlighted and I don't need to copy and paste it in the editor.
When I get these, there's usually enough context that I can find the actual text.
That being said, I've had to twist some arms in a previous job for new employees attaching screenshots of a log viewer instead of the whole logs. The big problem was training: Once I made it very clear to the entire team that unedited logs were critical to solving problems, management made sure that all newcomers knew how to attach unedited logs.
It seems there's great OCR available on Apple platforms, but to me it seems that we are giving ourselves a problem by properly attaching metadata where necessary.
I honestly thought this was going to be solved in the 2010s with the rise of comic-like memes, but we just kept sharing images with ever increasing compression artifacts as things were shared around and used to create new memes.
This is essentially a solved problem. Whenever someone sends me a screenshot that contains any text information (tables, etc), I pass it to an LLM and it correctly interprets the content of it. On modern versions of macOS you can just select text in images relatively painlessly, too.
Or just ask people not to send you data in useless formats. That way you don't have to burn an acre of trees to power it and you help someone be less difficult.
As described in the article, it isn't just text being image but that, usually, the image is only a subset of the entire text. Yes, OCR can help find the file containing a code segment in your local codebase but issues such as, mentioned in the article, sending a random error line rather the entire log remain.
Claude on Linux does it fine, so does cursor, codex, claude code, ollama etc. Not that I would use any of these for this; if someone sends me screenshot, it is relevant for me so I know where to find what is in it quite readily if needed at all.
I’m one of the people sending these screenshots, and glad to receive them. It helps jog my memory to see a screenshot from the original context, with syntax highlighting or especially log output from our besoke logging system for firmware. It’s very hard to read without the colors!
Many up-to-date messaging environments allow you to copy & paste text directly from your coding environment with indentation and syntax coloring intact. This is something the sender can establish before hitting "Send".
Also, the sender has the option to attaching the source file, which if entered into a coding environment will recreate the syntax colors.
What I usually do to share code, is send a link to GitHub or whatever VCS portal we are using. Of course, this doesn't work with local, new code, but that's why we also use liberally draft pull requests to share unfinished code.
It's not always easy to copy text out of tmux or a VM. Screenshots are easy to create and it's not as hard as you make it sound to type a name into the search bar in the IDE...
This is a lost cause, one of many that modern GUIs are responsible for. Just suck it up and deal with it because users are not going to stop sending you screenshots.
I think that Slack may be partially responsible for that.
If I copy code from PyCharm or VS Code and paste it into fucking Microsoft Word, even spawn-of-Satan-MS-Word-for-Mac respects most of my formatting. Plenty of web text editors are also able to do that.
But Slack, "The King of Useless Features Nobody Asked For", can't bother themselves to implement such a useful feature for their primary market.
what we need is a "rich text box" file format, classed as an image for embedding purposes and supported everywhere images are, but formattable and selectable text internally. would solve the issue of people using images of text on various social media sites too.
Preview on Mac does automatic OCR. I'm sure other tools exist that are similarly friction-free on other platforms, but it took me under 5 seconds (drag the image from the webpage into my downloads folder, click on it, and then select the relevant snippet and CMD+C to copy it).
I imagine I'd have similar frustrations if I couldn't copy-paste the text easily though!
> or (these days) get my coding agent to find the relevant module for me
????? Just OCR a line and paste it into the IDE’s search field???? Or, if for some baffling reason you don’t have the ability to OCR, just pick out a function declaration in the screenshot and search for that? We’re so doomed as a profession.
gtk-vector-screenshot (<https://github.com/nomeata/gtk-vector-screenshot>) will do this, but for GTK apps only. It relies on a custom protocol layered on top of X Window, and I think traverses the tree of GTK widgets to create a vector representation. For a general screenshot program to work, I imagine it would need some sort of hook into every GUI framework used on your system.
Please send screenshots. Also include links to the actual source where you got it, or if you can't sure, also share the text. But a screenshot is a perfect starting point as I may not always be in a position to follow a URL or deal with text that some chat program is having difficulty formating properly, and a screnshot can go a long way if I see what I need to see.
Screenshots are fine. Just don't ONLY send screenshots.
I personally hate screenshots of kernel panics. Or anything else where you might be dealing with 64-bit hex addresses like "0xffffffff81b7ed80"
Typing that from a picture is infinitely more error prone than just cut/paste.
> I have to either very carefully type some of the code into a search box or (these days) get my coding agent to find the relevant module for me.
Your coding agent is not very smart if it can't deal with something as simple as OCR'ing an image and processing all the references in it, or letting you just select text from an image and searching or copying to the clipboard.
the whole post is entirely missing the point. screenshots do have its merit for reasons already mentioned here. beyond that the optimal method would be a link to the line or section into the respective source control system.
Only among people who don't code. A non-coder doesn't know the difference between a block of code, and a picture of a block of code.
A woman visits the studio of a famous artist. She says, "That woman is all distorted!" The artist replies, "Madam, that is not a woman, that is a picture of a woman."
This is astonishing. A screenshot is not only the least useful representation of a subject under discussion, it also requires more bandwidth than text.
I see two possible reasons for this -- the sender has no technical experience, or they're focused on making things more difficult for the recipient.
But when trying to decide between these two, I'm reminded of the saying, "Never attribute to malice that which can be adequately explained by stupidity."
This actually happened. A client wrote me, saying, "First, don't treat me like an idiot -- I have years of computer experience."
"Okay, I promise," I replied. "What's the problem?"
"Your program doesn't work."
"Can you be more specific?"
"I followed your instructions to the letter, but I see an error message."
"Okay, what is the error message?"
"It says, 'User [Enter your name here] is not found'."
Why though? This is a common problem which only requires one thing: empathy/politeness from the screenshot sender. They ask your for your help and attention, but they can't be bothered to not to waste your time. I think it's fair to point out that this is bad workplace behavior
Except as I pointed out in another comment, there are many reasons why screenshots are superior and don't get messed up the way plain text does.
I'm shocked to discover so many people hate screenshots, because I hate getting misaligned line-wrapped text that destroys readability. But now I can understand people have different preferences.
It's not bad workplace behavior, and it's not a lack of empathy or politeness. It just seems to be different preferences is all.
I always thought a screenshot of code was just an iPeople flex. Like, "look at my code, framed in this glassy macOS window with a $29.99 drop shadow." Kinda like how Nix or Arch users can't resist mentioning they use Nix or Arch. (btw i use arch)
Another thing I wish was more common is metadata in screenshots, especially on phones. Eg if I take a screenshot of a picture in Instagram, I wish a URL of the picture was embedded (eg instagram.com/p/ABCD1234/). If I take a screenshot in the browser, include the URL that's being viewed (+ path to the DOM element in the viewport). If I take a screenshot in a maps app, include the bounding coordinates. If I take a screenshot in a PDF viewer, include a SHA1 hash of the document being viewed + offset in the document so that if I send the screenshot to someone else with the same document, it can seamlessly link to it. Etc etc.
There are probably privacy concerns to solve here, but no idea is new in computer science and I'm pretty sure some grad student somewhere has already explored the topic in depth (it just never made it to mainstream computing platforms).
It feels like screenshots have become the de facto common denominator in our mobile computing era, since platforms have abstracted files away from us. Lots of people who have only ever used phones as their main computing devices are confused when it comes to files, but everyone seems to understand screenshots.
Also, necessary shout out to Screenshot Conf! https://screenshot.arquipelago.org
reply