<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jarvis</title>
    <description>The latest articles on DEV Community by Jarvis (@jaweii).</description>
    <link>https://dev.to/jaweii</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4074196%2F976005c2-31d5-44a4-b86b-c8e27032f1de.jpg</url>
      <title>DEV Community: Jarvis</title>
      <link>https://dev.to/jaweii</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jaweii"/>
    <language>en</language>
    <item>
      <title>How to Extract Text from an Image Online (Free Image to Text Converter Guide)</title>
      <dc:creator>Jarvis</dc:creator>
      <pubDate>Fri, 16 Oct 2026 12:18:52 +0000</pubDate>
      <link>https://dev.to/jaweii/how-to-extract-text-from-an-image-online-free-image-to-text-converter-guide-1mbm</link>
      <guid>https://dev.to/jaweii/how-to-extract-text-from-an-image-online-free-image-to-text-converter-guide-1mbm</guid>
      <description>&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I work on PhoText (&lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;https://photext.ai/&lt;/a&gt;). This is the workflow I actually use when I need the words out of a picture — a screenshot, a receipt, a scanned page, a photo of a whiteboard — without retyping them.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;image to text converter&lt;/strong&gt; reads the letters in a picture (OCR) and hands them back as real, editable text. The fastest browser path: upload the image to the free &lt;a href="https://photext.ai/image-to-text/" rel="noopener noreferrer"&gt;PhoText image to text converter&lt;/a&gt;, wait a few seconds, then copy everything, save it as a &lt;code&gt;.txt&lt;/code&gt; file, or drag across the picture to grab a single line. If you only want one phrase, the &lt;a href="https://photext.ai/copy-text-from-image/" rel="noopener noreferrer"&gt;copy text from image&lt;/a&gt; tool lets you select words right on the picture like a web page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why people search for this
&lt;/h2&gt;

&lt;p&gt;In the U.S., &lt;strong&gt;image to text&lt;/strong&gt; gets roughly &lt;strong&gt;90,500&lt;/strong&gt; searches a month, &lt;strong&gt;image to text converter&lt;/strong&gt; about &lt;strong&gt;22,200&lt;/strong&gt;, &lt;strong&gt;extract text from image&lt;/strong&gt; and &lt;strong&gt;picture to text&lt;/strong&gt; about &lt;strong&gt;12,100&lt;/strong&gt; each, and &lt;strong&gt;copy text from image&lt;/strong&gt; about &lt;strong&gt;8,100&lt;/strong&gt; (Keyword Planner–backed tool data). The intent behind all of them is the same: there is text locked inside pixels and someone needs it as text — to paste into an email, a spreadsheet, a ticket, a translation, or a document.&lt;/p&gt;

&lt;p&gt;Typical cases I run into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A screenshot of an error message that needs to go into a bug report&lt;/li&gt;
&lt;li&gt;A Wi-Fi password, serial number, or tracking code printed on a label&lt;/li&gt;
&lt;li&gt;A receipt or invoice photo that needs to become a line in an expense sheet&lt;/li&gt;
&lt;li&gt;A slide or whiteboard photo after a meeting&lt;/li&gt;
&lt;li&gt;A scanned page or a PDF page that is really just an image&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to extract text from an image online
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Start with the clearest version of the image
&lt;/h3&gt;

&lt;p&gt;OCR is only as good as the pixels it reads. Use the original screenshot instead of a re-shared, compressed copy. For photos, shoot straight on, avoid glare, and make sure the text is in focus. A slight tilt is fine; motion blur is not.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Upload it to the converter
&lt;/h3&gt;

&lt;p&gt;Open the &lt;a href="https://photext.ai/image-to-text/" rel="noopener noreferrer"&gt;image to text converter&lt;/a&gt; and drop in your file. JPG, PNG, JPEG, WEBP, BMP, and PDF pages are supported, and there is no sign-up needed for the basic flow. Recognition covers major languages, including English, Spanish, French, Portuguese, Russian, Chinese, Japanese, Korean, Thai, and Hindi.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Let OCR do the reading
&lt;/h3&gt;

&lt;p&gt;Within a few seconds every line comes back in reading order. Line breaks are kept, so a receipt still reads like a receipt and a list still reads like a list — you are not left untangling one giant paragraph.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Check the output against the picture
&lt;/h3&gt;

&lt;p&gt;The image sits next to the extracted text, so you can compare line by line. Pay extra attention to the characters OCR tends to confuse: &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;O&lt;/code&gt;, &lt;code&gt;1&lt;/code&gt;, &lt;code&gt;l&lt;/code&gt;, and &lt;code&gt;I&lt;/code&gt;, &lt;code&gt;5&lt;/code&gt; and &lt;code&gt;S&lt;/code&gt;, and anything in a decorative font. This matters most for codes and passwords, where one wrong character breaks everything.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Take the text with you
&lt;/h3&gt;

&lt;p&gt;You have three options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copy all&lt;/strong&gt; — grabs every line with the line breaks intact&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save as .txt&lt;/strong&gt; — handy when you are processing several images&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Select on the image&lt;/strong&gt; — drag across just the words you need&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Copying a single line instead of the whole image
&lt;/h2&gt;

&lt;p&gt;Sometimes you do not want a text dump — you want one phone number from a flyer or one sentence from a screenshot. For that, the &lt;a href="https://photext.ai/copy-text-from-image/" rel="noopener noreferrer"&gt;copy text from image&lt;/a&gt; page works differently: the AI lays an invisible text layer exactly over every word it finds, so the picture behaves like a web page. Drag across the words, or long-press on your phone, then copy. Clicking a line gives you a small copy menu, and &lt;strong&gt;Copy all text&lt;/strong&gt; is still there if you change your mind.&lt;/p&gt;

&lt;p&gt;On mobile this is the part I use most. Long-press, drag the selection handles, tap Copy — the same gesture you already use everywhere else on your phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips for better OCR results
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Crop to the text.&lt;/strong&gt; Removing busy backgrounds and unrelated objects reduces false reads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upscale tiny text first.&lt;/strong&gt; If the letters are only a few pixels tall, enlarge the image before uploading.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skip OCR for real-text PDFs.&lt;/strong&gt; If a PDF already has selectable text, just copy it; OCR is for scans and screenshots.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proofread numbers twice.&lt;/strong&gt; Dates, prices, and IDs are where a single misread costs the most.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  When you need to change the text, not extract it
&lt;/h2&gt;

&lt;p&gt;Extraction is only half the story. If the real goal is to fix a typo on a poster, update a price on a product photo, or reword a screenshot, copying the text out and rebuilding the graphic is the slow way. In PhoText you can click a recognized line, choose &lt;strong&gt;Edit&lt;/strong&gt;, and the picture opens in the &lt;a href="https://photext.ai/editor/" rel="noopener noreferrer"&gt;image text editor&lt;/a&gt; with every word already mapped. The replacement text takes on the original font and the background is rebuilt behind it.&lt;/p&gt;

&lt;p&gt;Related tools in the same place, if your next step is one of these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://photext.ai/ImageTranslator/" rel="noopener noreferrer"&gt;Translate text in an image&lt;/a&gt; and keep the layout&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://photext.ai/image_remove_text/" rel="noopener noreferrer"&gt;Remove text from an image&lt;/a&gt; and fill the background&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://photext.ai/FontFinder/" rel="noopener noreferrer"&gt;Identify the font&lt;/a&gt; used in a picture&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Privacy
&lt;/h2&gt;

&lt;p&gt;Images are stored only for a limited time: 30 days for logged-in users and 1 day for visitors who are not logged in, after which they are permanently deleted. Even so, I would not upload anything you are not allowed to share — passports, bank statements, or private medical documents.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is the image to text converter free?
&lt;/h3&gt;

&lt;p&gt;The core upload, recognize, and copy flow works without signing up. Plans and quotas can change, so check the site for current limits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does it keep formatting?
&lt;/h3&gt;

&lt;p&gt;It keeps line breaks and reading order. Each visual line becomes one line of output. It does not try to recreate fonts, colors, or tables as a formatted document.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I extract text from a picture on my phone?
&lt;/h3&gt;

&lt;p&gt;Yes. The site works in mobile browsers — upload from your camera roll, then long-press to select or use Copy all.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can it read handwriting?
&lt;/h3&gt;

&lt;p&gt;Clear, printed text gives the most reliable results. Neat handwriting can work, but always proofread the output.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap-up
&lt;/h2&gt;

&lt;p&gt;Next time you catch yourself retyping text from a screenshot or a photo, upload it to the &lt;a href="https://photext.ai/image-to-text/" rel="noopener noreferrer"&gt;PhoText image to text converter&lt;/a&gt; instead: a few seconds of OCR, a quick proofread against the original, and the text is ready to paste wherever it needs to go.&lt;/p&gt;

</description>
      <category>ocr</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>ai</category>
    </item>
    <item>
      <title>How to Tell What Font Is This From an Image (Free Font Identifier)</title>
      <dc:creator>Jarvis</dc:creator>
      <pubDate>Tue, 13 Oct 2026 11:16:22 +0000</pubDate>
      <link>https://dev.to/jaweii/how-to-tell-what-font-is-this-from-an-image-free-font-identifier-56b3</link>
      <guid>https://dev.to/jaweii/how-to-tell-what-font-is-this-from-an-image-free-font-identifier-56b3</guid>
      <description>&lt;p&gt;You photographed a sign, a product label, or a website headline and now you need the same typeface. Searching "what font is this" only helps if you already know the name. A font identifier that reads the letters from your image gets you to a usable match in under a minute.&lt;/p&gt;

&lt;p&gt;This guide shows how to identify a font from a picture, how to pick among close matches, and what to do when the real job is changing the words afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a font identifier actually does
&lt;/h2&gt;

&lt;p&gt;A font identifier compares the shapes of letters in your image to a large library of typefaces. It looks at details your eye often misses: the terminal of an "a", the spur on a "G", the width of an "o", or the way an "R" joins its leg. Those small differences separate thousands of lookalike fonts.&lt;/p&gt;

&lt;p&gt;You do not need to crop each letter by hand or describe the style in words. Upload the image, click the line of text, and review ranked matches with similarity scores.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to answer "what font is this" from a photo
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Capture a clean image.&lt;/strong&gt; A straight-on screenshot beats a tilted phone photo. Prefer sharp, high-contrast letters over blurry or strongly stylized effects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open the free &lt;a href="https://photext.ai/FontFinder/" rel="noopener noreferrer"&gt;PhoText Font Finder&lt;/a&gt;.&lt;/strong&gt; Upload a JPG, PNG, WEBP, or PDF. No desktop install is required for the core flow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Click the text you care about.&lt;/strong&gt; The tool detects lines in the image. Click the headline, logo wordmark, or label you want to identify, and leave unrelated text alone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compare the top matches.&lt;/strong&gt; Check distinctive glyphs such as "a", "g", "R", and "y" between your source and each suggestion. Similarity score is a hint, not a verdict.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download a commercial-safe lookalike.&lt;/strong&gt; Matches point to fonts that are free for commercial use, which is usually enough for client mockups, social graphics, and quick rebuilds.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Tips that improve match quality
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Identify one style at a time when a design mixes bold display type with a script tagline.&lt;/li&gt;
&lt;li&gt;Give the identifier a full word or short phrase, not a single capital letter.&lt;/li&gt;
&lt;li&gt;Prefer plain lettering over heavy shadows, outlines, or warped perspective.&lt;/li&gt;
&lt;li&gt;Crop to the text line and retry if detection fails on a busy background.&lt;/li&gt;
&lt;li&gt;Multilingual packaging still works — English, Chinese, Japanese, Korean, and many other languages are supported.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When you need more than the font name
&lt;/h2&gt;

&lt;p&gt;Sometimes "what font is this" is only step one. If you actually need to rewrite a price, date, promo line, or typo inside the same flat image, open that file in the &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText image text editor&lt;/a&gt; after you know the style. You can change the wording in place while keeping size, weight, and color close to the original, without rebuilding the layout in Photoshop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common U.S. use cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Matching a client's brand type from a PDF or a website screenshot&lt;/li&gt;
&lt;li&gt;Rebuilding a logo when the layered design files are gone&lt;/li&gt;
&lt;li&gt;Identifying fonts on product packaging and retail signage&lt;/li&gt;
&lt;li&gt;Recreating social graphics and YouTube thumbnails in the same style&lt;/li&gt;
&lt;li&gt;Answering font questions for menus, posters, and book covers you photographed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is the font identifier free?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes. You can upload an image and review matches without installing software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it work on logos?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes, as long as the letters are readable. Heavily customized or monogram logos are harder than clean wordmarks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if the exact font is paid?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
You still get the closest free commercial-use alternatives, which covers most mockups and quick production edits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I identify fonts in screenshots and photos of signs?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes. Screenshots, photos of signs, product labels, posters, and UI captures are all normal inputs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Next time you need to know what font is in a picture, skip guessing from memory. Drop a clean image into the &lt;a href="https://photext.ai/FontFinder/" rel="noopener noreferrer"&gt;free font finder&lt;/a&gt;, click the text, and choose among free commercial-use matches. If the next step is rewriting the words themselves, send the same image into &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; and edit the text in place.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>productivity</category>
      <category>typography</category>
      <category>design</category>
    </item>
    <item>
      <title>How to Edit Text on a Picture Online Without Photoshop</title>
      <dc:creator>Jarvis</dc:creator>
      <pubDate>Tue, 13 Oct 2026 07:22:36 +0000</pubDate>
      <link>https://dev.to/jaweii/how-to-edit-text-on-a-picture-online-without-photoshop-iim</link>
      <guid>https://dev.to/jaweii/how-to-edit-text-on-a-picture-online-without-photoshop-iim</guid>
      <description>&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I work on PhoText (&lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;https://photext.ai/&lt;/a&gt;). This is a practical guide to editing text that is already part of a finished picture — not dropping a sticker on top, and not rebuilding the whole design in Photoshop. Try the workflow on a real file before you decide it fits yours.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;When people search &lt;strong&gt;edit text on a picture&lt;/strong&gt;, they usually have a flattened JPG or PNG: a product shot, a social download, a menu photo, a screenshot, an event flyer. The letters are pixels, not a live text layer. Here is the browser workflow I use to replace those words while keeping the surrounding look close enough to publish.&lt;/p&gt;

&lt;h2&gt;
  
  
  What “edit text on a picture” actually means
&lt;/h2&gt;

&lt;p&gt;A camera OCR app answers &lt;em&gt;what does this say?&lt;/em&gt; A design suite answers &lt;em&gt;rebuild the whole graphic.&lt;/em&gt; The everyday marketing and support job sits in between:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Find&lt;/strong&gt; the words on the picture&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remove&lt;/strong&gt; the old strokes and repair the background&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redraw&lt;/strong&gt; new wording that matches font feel, color, size, and position&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Dropping a system-font text box on top of the picture almost always looks like a sticker. Reopening a layered design file is better when you still have it — but most handoffs arrive as a flat export from a client, a marketplace, or last month’s social save.&lt;/p&gt;

&lt;p&gt;U.S. Keyword Planner–backed volume for &lt;strong&gt;edit text on picture&lt;/strong&gt; sits around &lt;strong&gt;2,400&lt;/strong&gt; monthly searches. Close cousins like &lt;strong&gt;edit text in picture&lt;/strong&gt; and &lt;strong&gt;change text on a picture&lt;/strong&gt; land in a similar band. That is commercial intent: people want a shippable picture, not a research note.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tool I use: PhoText
&lt;/h2&gt;

&lt;p&gt;I use &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; for in-place picture text edits. Upload a JPG, PNG, WebP, or screenshot, click the line you need to change, type the replacement, and let the editor match style and background. No install for the core click-to-edit path.&lt;/p&gt;

&lt;p&gt;Related jobs in the same product when you need them: &lt;a href="https://photext.ai/FontFinder/" rel="noopener noreferrer"&gt;font identification&lt;/a&gt;, conversational &lt;a href="https://photext.ai/ai_image_editor/" rel="noopener noreferrer"&gt;AI image editing&lt;/a&gt; for stubborn backgrounds, &lt;a href="https://photext.ai/ImageTranslator/" rel="noopener noreferrer"&gt;image translation&lt;/a&gt; for localization, &lt;a href="https://photext.ai/image_remove_text/" rel="noopener noreferrer"&gt;remove text&lt;/a&gt; / cleanup for assets you own, and &lt;a href="https://photext.ai/copy-text-from-image/" rel="noopener noreferrer"&gt;OCR / copy text&lt;/a&gt; when you only need the words out. Free tiers and quotas change — check the live plan page; I am not quoting prices here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workflow: edit text on a picture in a few minutes
&lt;/h2&gt;

&lt;p&gt;Six steps from upload to download. Stay on one line until that line looks right, then move on.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Start from the sharpest file
&lt;/h3&gt;

&lt;p&gt;Open &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; and drop in the picture. Prefer the original export or a high-resolution product shot over a phone photo of a monitor, a chat-app preview, or a third-generation social save. Soft or tiny lettering is harder to detect and harder to match.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Click the line you want to change
&lt;/h3&gt;

&lt;p&gt;Select the headline, price, date, button label, menu item, or caption. If detection misreads a character, correct that first so the editor targets the right strokes. Leave every other line alone when you only need one fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Type the replacement (keep length sane)
&lt;/h3&gt;

&lt;p&gt;Enter the new wording. Similar character count usually keeps spacing and layout stable. Keep capitalization close to the original (all caps stays all caps) unless you are redesigning on purpose. Brand names, SKUs, and URLs should stay exact unless you intend to change them.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Match style — or change it deliberately
&lt;/h3&gt;

&lt;p&gt;Let the editor carry size, weight, and color from the original line when you want a seamless fix. Adjust font, color, or size when a deliberate redesign is better than a pure match. Thirty seconds here is the difference between “fixed” and “obviously edited.”&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Use conversational AI for stubborn backgrounds
&lt;/h3&gt;

&lt;p&gt;Busy product photos, wood grain, fabric, textured posters, or heavy shadows can leave spots after a simple erase. Switch to &lt;a href="https://photext.ai/ai_image_editor/" rel="noopener noreferrer"&gt;AI image editing&lt;/a&gt; and describe the change in plain English so cleanup, background repair, and style transfer run together instead of a smudge → erase → retype loop.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Zoom to 100%, then download
&lt;/h3&gt;

&lt;p&gt;Inspect stroke ends, shadows, curved labels, and anything next to prices or dates. Fix one weak line at a time. Download when the edited picture reads as native beside the original.&lt;/p&gt;

&lt;h2&gt;
  
  
  U.S.-relevant use cases
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;E-commerce product pictures.&lt;/strong&gt; Marketplace listings often reuse one hero shot. When only the flattened pack photo remains, update a promo badge or price callout in place so lighting stays intact. Regulated claims still need a qualified reviewer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paid social and ads.&lt;/strong&gt; Offer copy changes faster than creative systems. When the agency master is offline, edit the headline on the exported picture, then spot-check brand names, prices, and landing URLs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;App Store and Play Store screenshots.&lt;/strong&gt; Keep UI chrome and status bars untouched; change only the marketing caption you mean to update, and check fit on a phone-sized preview.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Menus, posters, and local event graphics.&lt;/strong&gt; Small businesses often only have a photo of last month’s board. Updating a date, price, or special while holding display lettering looks intentional instead of stickered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Social creatives and thumbnails.&lt;/strong&gt; Feed posts and YouTube thumbnails often leave the design tool as a flattened export. Keep replacements short — a second line of thumbnail copy often fails at phone size.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this workflow is — and isn’t — the right tool
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Strong fit when:&lt;/strong&gt; you only have a flattened product picture, ad, screenshot caption, menu photo, or packaging shot; you need a short wording change that should look native; you are editing assets you created, own, or have clear permission to change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better elsewhere when:&lt;/strong&gt; you still have the layered design file and licensed fonts (edit the source); the text is tiny, blurred, or heavily stylized and every retry fails; the job is a full redesign, not a line swap; the image is an ID, receipt, certificate, or anything you are not authorized to alter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Responsible use
&lt;/h2&gt;

&lt;p&gt;Only edit pictures you created, own, or have clear permission to change. PhoText is for legitimate product, marketing, creative, support, and educational work.&lt;/p&gt;

&lt;p&gt;Do &lt;strong&gt;not&lt;/strong&gt; use it to forge or alter IDs, passports, certificates, diplomas, exam papers, invoices, receipts, bank statements, or any document meant to prove identity, money, or legal status. Do not present an edited picture as an unaltered record. Do not remove another party’s watermark without authorization. Do not impersonate a brand or person to scam or mislead.&lt;/p&gt;

&lt;p&gt;If a request would require any of that, stop and use a legitimate process instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick checklist before you publish the edited picture
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sharpest source file you can find&lt;/li&gt;
&lt;li&gt;Only the intended line changed&lt;/li&gt;
&lt;li&gt;Length and capitalization still fit the layout&lt;/li&gt;
&lt;li&gt;Brand names and numbers proofed at 100% zoom&lt;/li&gt;
&lt;li&gt;Background repair clean on textured areas&lt;/li&gt;
&lt;li&gt;You have rights to edit and publish the asset&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ (short)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can I keep the same font look?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes — matching size, weight, and color from the original line is the default. &lt;a href="https://photext.ai/FontFinder/" rel="noopener noreferrer"&gt;Identify Font&lt;/a&gt; helps when you want a closer typeface. Exact licensed brand fonts still vary; compare against the real design before shipping brand-critical work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does this work on JPG, PNG, and screenshots?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes. Start from the largest sharp file. Heavily recompressed social saves hurt accuracy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Edit text on a picture&lt;/strong&gt; is a pixel job, not a text-box job. Use a browser editor that removes, repairs, and redraws in one pass when the design file is gone. I use &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; for that workflow; open a real picture and judge the result yourself before you commit a process to it.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Remove Text from an Image Online Without Photoshop</title>
      <dc:creator>Jarvis</dc:creator>
      <pubDate>Mon, 12 Oct 2026 01:16:24 +0000</pubDate>
      <link>https://dev.to/jaweii/how-to-remove-text-from-an-image-online-without-photoshop-3kl4</link>
      <guid>https://dev.to/jaweii/how-to-remove-text-from-an-image-online-without-photoshop-3kl4</guid>
      <description>&lt;p&gt;You have a finished product shot, ad, or screenshot and the on-image words need to go — an expired SALE badge, a burned-in caption, a name in UI chrome. There is no text layer. A blur bar looks amateur. Clone-stamping by hand is slow. Here is the workflow I use to &lt;strong&gt;remove text from an image&lt;/strong&gt; online, repair the background, and optionally put new wording back in the same spot.&lt;/p&gt;

&lt;h2&gt;
  
  
  What “remove text from image” actually means
&lt;/h2&gt;

&lt;p&gt;When people search &lt;strong&gt;remove text from image&lt;/strong&gt;, &lt;strong&gt;delete text from image&lt;/strong&gt;, or &lt;strong&gt;erase text from image&lt;/strong&gt;, the letters are already pixels. A production-ready cleanup has to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Find&lt;/strong&gt; the lettering (OCR / region detection)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Erase&lt;/strong&gt; the strokes plus attached shadow, outline, or glow&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repair&lt;/strong&gt; whatever sat behind those letters so sky, fabric, UI chrome, or packaging texture continues naturally&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is AI inpainting aimed at text — not a magic “make copyright go away” button. Flat walls, gradients, and solid UI panels rebuild cleanest; faces, fine patterns, glass, and extreme script may need a second pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tool: PhoText
&lt;/h2&gt;

&lt;p&gt;I use &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; for this. It is a freemium, browser-based AI editor aimed at text already baked into images. Upload a JPG, PNG, WebP, or screenshot, select the words, erase them, and let the model rebuild the fill. No install.&lt;/p&gt;

&lt;p&gt;It also does &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;click-to-edit / replace&lt;/a&gt;, &lt;a href="https://photext.ai/FontFinder/" rel="noopener noreferrer"&gt;font recognition&lt;/a&gt;, conversational &lt;a href="https://photext.ai/ai_image_editor/" rel="noopener noreferrer"&gt;AI image editing&lt;/a&gt;, &lt;a href="https://photext.ai/ImageTranslator/" rel="noopener noreferrer"&gt;image translation&lt;/a&gt;, a dedicated &lt;a href="https://photext.ai/image_remove_text/" rel="noopener noreferrer"&gt;remove text&lt;/a&gt; path, &lt;a href="https://photext.ai/remove_watermark/" rel="noopener noreferrer"&gt;watermark removal&lt;/a&gt; for assets you own or are authorized to clear, and &lt;a href="https://photext.ai/copy-text-from-image/" rel="noopener noreferrer"&gt;OCR / copy text&lt;/a&gt; when you only need the words out.&lt;/p&gt;

&lt;p&gt;Free tiers and limits can change — check the live product for the current plan. I am not quoting prices here because they shift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workflow: remove text from a photo in a few minutes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Upload the sharpest export you have
&lt;/h3&gt;

&lt;p&gt;Open &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; and drop in the file. Prefer the original export over a phone photo of a monitor or a third-generation social save. Soft pixels weaken detection and fills.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Select the text you want gone
&lt;/h3&gt;

&lt;p&gt;Click the badge, caption, price string, or UI label that should disappear. If detection misses a glyph, mark it with erase / Removal tools. Leave brand locks untouched when you only need one region cleared.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Erase and let AI repair the background
&lt;/h3&gt;

&lt;p&gt;Run the remove / erase path so strokes leave and the area rebuilds from neighboring texture and lighting. For cluttered creatives, erase-all then restore any spot you did not mean to clear.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Optional: replace instead of leaving a blank
&lt;/h3&gt;

&lt;p&gt;Need a new headline in the same place? Type the replacement after the old letters clear. Use &lt;a href="https://photext.ai/FontFinder/" rel="noopener noreferrer"&gt;Identify Font&lt;/a&gt; or AI style matching for weight and color. That is the edge versus a text-only remover: clean the pixels, then put shippable type back if you need it.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Prefer conversational AI for stubborn backgrounds
&lt;/h3&gt;

&lt;p&gt;Busy product photos, wood grain, fabric, or textured posters can leave spots. Switch to &lt;a href="https://photext.ai/ai_image_editor/" rel="noopener noreferrer"&gt;AI image editing&lt;/a&gt; and describe the change in plain English (“remove the SALE badge and keep the fabric weave”).&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Zoom to 100%, then download
&lt;/h3&gt;

&lt;p&gt;Inspect stroke ends, shadows, and the fill zone. For privacy redactions, confirm nothing readable remains. Export PNG for a lossless master; high-quality JPEG for the web.&lt;/p&gt;

&lt;h2&gt;
  
  
  Everyday use cases (legitimate creative work)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Product shots and e-commerce&lt;/strong&gt; — erase temporary stickers, “new” badges, or seasonal callouts on photos you own or may edit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ads and evergreen banners&lt;/strong&gt; — when promo copy expires and only the flattened file remains, clear the old badge or swap matched lettering without waiting on the original designer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screenshot privacy&lt;/strong&gt; — developers and support writers often need to &lt;strong&gt;remove text from a screenshot&lt;/strong&gt; so names, emails, or account IDs disappear into the UI chrome instead of a black box. Zoom in. For highly sensitive secrets, follow your team’s policy on solid boxes or on-device crops before upload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Packaging mocks&lt;/strong&gt; — clear a temporary claim on a mock you are authorized to edit. Ingredient and allergen wording on real packaging still needs human review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your own watermarks&lt;/strong&gt; — cleaning a client delivery when the unmarked master was misplaced, or preparing an authorized licensee export. That is not permission to strip stock-site marks or someone else’s logo.&lt;/p&gt;

&lt;h2&gt;
  
  
  When PhoText is — and isn’t — the right tool
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Strong fit when:&lt;/strong&gt; you only have a flattened file; you want remove plus optional replace in one product; you are cleaning marketing, product, social, or creative assets you have the right to change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose another path when:&lt;/strong&gt; you still have the layered source (edit there); you only need to &lt;em&gt;read&lt;/em&gt; the words (use OCR); the lettering is tiny, blurred, or on faces / fine fabric; you need print-production accuracy; the edit would mislead about identity, money, legal status, exams, or certificates; you lack permission to remove watermarks or logos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Responsible use
&lt;/h3&gt;

&lt;p&gt;Edit images you &lt;strong&gt;created, own, or have clear written permission&lt;/strong&gt; to change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do not&lt;/strong&gt; use PhoText to forge or alter IDs, passports, certificates, diplomas, grades, invoices, receipts, bank statements, or any document meant to prove identity, money, or legal status; strip watermarks or logos from stock or other people’s work; steal trademarks; or present an edited photo as an unaltered record of a real person, place, account, or event.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watermark framing:&lt;/strong&gt; remove watermarks only on assets you own or are authorized to edit — not on content you do not control.&lt;/p&gt;

&lt;p&gt;Honest limit: AI text removal rebuilds from surrounding pixels; it cannot recover what the camera never captured or make an unauthorized edit legal.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;How do I remove text from an image online?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Upload to &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt;, select the words (or run erase), let AI clear lettering and repair the background, compare at full size, download.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I erase text without changing the rest of the picture?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
That is the aim. Plain or evenly textured backgrounds rebuild more cleanly than faces or fine patterns. Always inspect at 100% zoom.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remove vs edit text in an image?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Remove&lt;/strong&gt; clears words and rebuilds the background. &lt;strong&gt;Edit / replace&lt;/strong&gt; clears the old words and redraws new ones in a matching style. PhoText supports both in one session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I remove text from a screenshot for privacy?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes — erase names, emails, phones, and account IDs baked into the UI, then zoom in. Follow team policy for highly sensitive secrets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will there be a blurry patch?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Over sky, gradients, and solid UI, the fill should look continuous. On heavy texture, some softness can remain — run a second pass or return to the layered source when perfection matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Soft next step
&lt;/h2&gt;

&lt;p&gt;Open &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt;, upload a clear product photo or screenshot you are allowed to edit, remove one obvious badge or UI string, and inspect the fill at full size. If you need new words in the same spot, type the replacement next. Start with one region, stay inside Responsible use, then decide whether to ship the cleaned variant or return to the layered source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remove the text. Repair the background. Keep control of what stays.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Edit Text in an Image Online Without Photoshop</title>
      <dc:creator>Jarvis</dc:creator>
      <pubDate>Sun, 11 Oct 2026 22:14:20 +0000</pubDate>
      <link>https://dev.to/jaweii/how-to-edit-text-in-an-image-online-without-photoshop-25p0</link>
      <guid>https://dev.to/jaweii/how-to-edit-text-in-an-image-online-without-photoshop-25p0</guid>
      <description>&lt;p&gt;You inherit a finished graphic — ad creative, product shot, social post, screenshot — and someone needs the headline, price, or label changed. There is no text layer. Opening the file in a normal editor just shows pixels. The “proper” fix used to be erase, clone-stamp, hunt a matching font, retype, export. That is a long job for a short wording change.&lt;/p&gt;

&lt;p&gt;Here is the workflow I use now when I need to &lt;strong&gt;edit text in an image&lt;/strong&gt; online. It runs in the browser, keeps the original look close enough to ship, and I only fall back to a full design tool when I still have the layered source.&lt;/p&gt;

&lt;h2&gt;
  
  
  What “edit text in image” actually means
&lt;/h2&gt;

&lt;p&gt;When people search &lt;strong&gt;edit text in image&lt;/strong&gt;, &lt;strong&gt;edit image text&lt;/strong&gt;, or &lt;strong&gt;edit text in photo&lt;/strong&gt;, they usually have a &lt;em&gt;flattened&lt;/em&gt; picture: a social download, a client’s flat export, a screenshot, a product photo, an AI-generated poster. The letters on that file are pixels, not a live text box.&lt;/p&gt;

&lt;p&gt;A real in-image edit has to do three jobs at once:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Find&lt;/strong&gt; the words (OCR / region detection)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remove&lt;/strong&gt; the old strokes and repair whatever sat behind them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redraw&lt;/strong&gt; replacement type that fits the same style and layout&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is different from dropping a new text box in a random system font on top of the photo — which almost always looks like a sticker. It is also different from rebuilding the whole piece in a design app when you still have the source project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tool: PhoText
&lt;/h2&gt;

&lt;p&gt;I use &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; for this. It is a freemium, browser-based AI image text editor aimed at one job: change text that is already baked into an image. Upload a JPG, PNG, WebP, or screenshot, click the line, type the replacement, and let it match font feel, color, size, and background. No install. Core click-to-edit covers the flow below.&lt;/p&gt;

&lt;p&gt;It also does &lt;a href="https://photext.ai/FontFinder/" rel="noopener noreferrer"&gt;font recognition&lt;/a&gt;, conversational &lt;a href="https://photext.ai/ai_image_editor/" rel="noopener noreferrer"&gt;AI image editing&lt;/a&gt; (“replace Summer Sale with Fall Sale and keep the red display type”), &lt;a href="https://photext.ai/ImageTranslator/" rel="noopener noreferrer"&gt;image translation&lt;/a&gt;, &lt;a href="https://photext.ai/image_remove_text/" rel="noopener noreferrer"&gt;remove text&lt;/a&gt;, &lt;a href="https://photext.ai/remove_watermark/" rel="noopener noreferrer"&gt;watermark removal&lt;/a&gt; for assets you own or are authorized to clear, and &lt;a href="https://photext.ai/copy-text-from-image/" rel="noopener noreferrer"&gt;OCR / copy text&lt;/a&gt; when you only need the words out. For everyday wording fixes I mostly stay on click-to-edit.&lt;/p&gt;

&lt;p&gt;Free tiers and limits can change — check the live product for the current plan. I am not quoting prices here because they shift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workflow: edit text in an image in a few minutes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Upload the sharpest export you have
&lt;/h3&gt;

&lt;p&gt;Open &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; and drop in the file. Prefer the original export over a phone photo of a monitor, a chat preview, or a third-generation social save. Soft pixels weaken detection and style matching. JPG, PNG, WebP, and common screenshot formats all work; start from the largest sharp copy.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Click the line you want to change
&lt;/h3&gt;

&lt;p&gt;Select the headline, caption, price, button label, or menu item. If detection misreads a character, correct that before you rewrite so the editor targets the right strokes. Leave every other line alone when you only need one fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Type the replacement (keep length sane)
&lt;/h3&gt;

&lt;p&gt;Enter the new wording. Similar character count usually keeps spacing and layout stable. Keep capitalization close to the original (all caps stays all caps) unless you are redesigning on purpose.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Match style — or change it deliberately
&lt;/h3&gt;

&lt;p&gt;This is where quick edits usually look fake. Let PhoText carry size, weight, and color from the original line. Use &lt;a href="https://photext.ai/FontFinder/" rel="noopener noreferrer"&gt;Identify Font&lt;/a&gt; when you want a closer library match. Unlike tools that only force a same-font regenerate, PhoText also lets you adjust font, color, and size when a deliberate redesign is better than a pure match.&lt;/p&gt;

&lt;p&gt;Take thirty seconds here. It is the difference between “fixed” and “obviously edited.”&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Use conversational AI for stubborn backgrounds
&lt;/h3&gt;

&lt;p&gt;Busy product photos, wood grain, fabric, textured posters, or heavy shadows can leave spots after a simple erase. Switch to &lt;a href="https://photext.ai/ai_image_editor/" rel="noopener noreferrer"&gt;AI image editing&lt;/a&gt; and describe the change in plain English. One clear instruction often beats a smudge → erase → retype loop.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Zoom to 100%, then download
&lt;/h3&gt;

&lt;p&gt;Check stroke ends, serifs, shadows, and the repaired background at full size. Fix one weak line at a time rather than regenerating the whole graphic. Download when the edit reads as native.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this workflow is a good fit
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Marketing banners and evergreen ads when only the flattened export remains&lt;/li&gt;
&lt;li&gt;Social creatives and YouTube thumbnails that need a late title or date change&lt;/li&gt;
&lt;li&gt;Product photos, packaging mocks, and listing graphics (SKU rename, promo badge, size callout)&lt;/li&gt;
&lt;li&gt;Screenshots for docs, decks, and support — typo fixes and demo scrubbing&lt;/li&gt;
&lt;li&gt;App Store / Play Store listing art you own, with human review on localized strings&lt;/li&gt;
&lt;li&gt;Menus, posters, and local event graphics that only exist as a PNG from last month&lt;/li&gt;
&lt;li&gt;AI-generated images with broken or wrong lettering on signs and posters&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When I still use something else
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Brand-critical work with a licensed custom typeface and a layered source file — edit the real text layer in your design tool&lt;/li&gt;
&lt;li&gt;Full compositing, print production, or building a graphic from scratch — that is still a general photo or design app&lt;/li&gt;
&lt;li&gt;You only need the words in a document — use &lt;a href="https://photext.ai/copy-text-from-image/" rel="noopener noreferrer"&gt;copy text from image&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;You only need the words gone — use &lt;a href="https://photext.ai/image_remove_text/" rel="noopener noreferrer"&gt;remove text&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tiny, curved, handwritten, or heavily stylized script — inspect carefully; AI matching is good, not magic&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Responsible use
&lt;/h2&gt;

&lt;p&gt;Only edit images you created, own, or have clear permission to change. PhoText is for legitimate product, marketing, creative, support, and educational work.&lt;/p&gt;

&lt;p&gt;Do &lt;strong&gt;not&lt;/strong&gt; use it to forge or alter IDs, passports, certificates, diplomas, exam papers, invoices, receipts, bank statements, or any document meant to prove identity, money, or legal status. Do not present an edited image as an unaltered record. Do not remove another party’s watermark without authorization. Do not impersonate a brand or person to scam or mislead.&lt;/p&gt;

&lt;p&gt;If a request would require any of that, stop and use a legitimate process instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ (short)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can I keep the same font look?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes — matching size, weight, and color from the original line is the default. &lt;a href="https://photext.ai/FontFinder/" rel="noopener noreferrer"&gt;Identify Font&lt;/a&gt; helps when you want a closer typeface. Exact licensed brand fonts still vary; compare against the real design before shipping brand-critical work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I change font, color, or size on purpose?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes. Same-font matching is for invisible fixes; deliberate redesign is also supported.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does this work on JPG, PNG, and screenshots?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes. Start from the largest sharp file. Heavily recompressed social saves hurt accuracy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is this free?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
PhoText is freemium. Limits and plans change — check &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;photext.ai&lt;/a&gt; for what is current. I am not inventing prices here.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt;, upload the sharpest image you have.&lt;/li&gt;
&lt;li&gt;Click the text, type the replacement.&lt;/li&gt;
&lt;li&gt;Match font, color, and size (or redesign on purpose); use conversational edit on messy backgrounds.&lt;/li&gt;
&lt;li&gt;Review at 100% zoom, download once.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you inherit flattened graphics more than once a month, bookmark it. Future you will thank present you.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Edit Text in a JPG Online Without Photoshop</title>
      <dc:creator>Jarvis</dc:creator>
      <pubDate>Sun, 11 Oct 2026 04:09:21 +0000</pubDate>
      <link>https://dev.to/jaweii/how-to-edit-text-in-a-jpg-online-without-photoshop-4o0i</link>
      <guid>https://dev.to/jaweii/how-to-edit-text-in-a-jpg-online-without-photoshop-4o0i</guid>
      <description>&lt;p&gt;You get a product photo, an ad creative, or a social graphic as a &lt;strong&gt;JPG&lt;/strong&gt; — and then someone needs the price, headline, or product name changed. The file has no text layers. Opening it in a normal editor just shows pixels. The "proper" fix is erase, clone-stamp, hunt for a matching font, retype, export. That is a long job for a short wording change.&lt;/p&gt;

&lt;p&gt;Here is the workflow I use now for flattened JPGs. It runs in the browser, keeps the original look close enough to ship, and I only fall back to a full design tool when I still have the layered source.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why JPG text is awkward
&lt;/h2&gt;

&lt;p&gt;A JPG (JPEG) is a flattened, lossy picture. When the designer exported the final graphic, live text layers disappeared. The letters became part of the photo. There is no clickable text box waiting for you.&lt;/p&gt;

&lt;p&gt;So editing baked-in words means three jobs at once:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Read&lt;/strong&gt; the lettering from pixels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remove&lt;/strong&gt; the old strokes and rebuild the background&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redraw&lt;/strong&gt; new words that still look like they belong&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JPEG compression makes this harder. Sharp edges — including letter strokes — soften first. Always start from the largest, least-compressed copy you have.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tool: PhoText
&lt;/h2&gt;

&lt;p&gt;I use &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; for this. It is a freemium, browser-based AI image text editor aimed at one job: change text that is already inside an image. Upload a JPG, click the line, type the replacement, and let it match font feel, color, size, and background. No install. Core click-to-edit covers the flow below.&lt;/p&gt;

&lt;p&gt;It also does font recognition, conversational edits ("make this heading bigger"), image translation, watermark removal, and OCR when you need them. For JPG wording fixes I mostly stay on click-to-edit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workflow: edit text in a JPG in a few minutes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Upload the best JPG you have
&lt;/h3&gt;

&lt;p&gt;Open &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; and drop in the &lt;code&gt;.jpg&lt;/code&gt; / &lt;code&gt;.jpeg&lt;/code&gt;. Prefer the original export over a phone photo of a screen, a chat download, or a third-generation social save — every re-compress adds junk around the letters.&lt;/p&gt;

&lt;p&gt;PNG and WebP work too when you have them. For this post I am assuming you only have JPG.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Click the text and type the fix
&lt;/h3&gt;

&lt;p&gt;Click the line, word, or short phrase. If detection misreads a character, correct that before you apply so the model targets the right letters. Type the new wording. Keeping capitalization and roughly the same length usually fits the layout better.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Match font, color, and size
&lt;/h3&gt;

&lt;p&gt;This is where quick edits usually look fake. Use font recognition / Identify Font when you want a close library match, or let AI style matching carry weight, color, and common effects from the surrounding type. Eyedropper the original color — a slightly-off black looks wrong immediately.&lt;/p&gt;

&lt;p&gt;Take thirty seconds here. It is the difference between "fixed" and "obviously edited."&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Use conversational AI edit for stubborn backgrounds
&lt;/h3&gt;

&lt;p&gt;Busy product photos, wood grain, fabric, or textured posters can leave spots after a simple erase. Describe the change in plain English and let semantic edit + background repair run together instead of looping smudge → erase → retype.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Zoom to 100%, then export
&lt;/h3&gt;

&lt;p&gt;Check stroke ends, shadows, and the patch behind the old letters. Fix one bad line alone rather than regenerating the whole graphic. Export as PNG when you want a lossless working copy; export as high-quality JPEG when the photo must stay small for the web.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avoid&lt;/strong&gt; open → edit → save-as-JPG → edit again. Each extra JPG save re-compresses everything and softens the new text.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this workflow is a good fit
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Product shots and marketplace creatives (late SKU rename, promo badge, size callout)&lt;/li&gt;
&lt;li&gt;Ads and evergreen banners when only the flattened JPG remains&lt;/li&gt;
&lt;li&gt;Social creatives and AI-generated posters that need a wording pass&lt;/li&gt;
&lt;li&gt;Menus, packaging photos, and one-off marketing JPGs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When I still use something else
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Brand-critical work with a licensed custom typeface and a layered source file — edit the real text layer in your design tool&lt;/li&gt;
&lt;li&gt;Full compositing, print production, or building a graphic from scratch — that is still a general photo or design app&lt;/li&gt;
&lt;li&gt;Tiny, curved, or heavily stylized script — inspect carefully; AI matching is good, not magic&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://photext.ai/" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt;, upload the JPG.&lt;/li&gt;
&lt;li&gt;Click the text, type the replacement.&lt;/li&gt;
&lt;li&gt;Match font, color, and size (and use conversational edit on messy backgrounds).&lt;/li&gt;
&lt;li&gt;Review at 100% zoom, export once.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you inherit flattened JPGs more than once a month, bookmark it. Future you will thank present you.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Translate Text in an Image in 60 Seconds (Quick Workflow)</title>
      <dc:creator>Jarvis</dc:creator>
      <pubDate>Fri, 09 Oct 2026 04:22:56 +0000</pubDate>
      <link>https://dev.to/jaweii/how-to-translate-text-in-an-image-in-60-seconds-quick-workflow-54bj</link>
      <guid>https://dev.to/jaweii/how-to-translate-text-in-an-image-in-60-seconds-quick-workflow-54bj</guid>
      <description>&lt;h1&gt;
  
  
  How to Translate Text in an Image in 60 Seconds (Quick Workflow)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Quick answer:&lt;/strong&gt; To translate text in an image without retyping, upload the picture to a tool that replaces text in place — PhoText's image translator detects the text, lets you pick source and target language, and renders the translation back into the image with the original layout, font, and style intact. The standard mode is free, works in the browser, and handles 100+ languages. You proofread directly on the picture before exporting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;You land somewhere you don't speak the language — or a supplier, a user, or a screenshot sends you text you can't read. The picture itself is fine: a restaurant menu, a receipt for an expense report, a settings screen from a user in Tokyo, a product label from a supplier in Shenzhen.&lt;/p&gt;

&lt;p&gt;The classic fixes all break something:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copy each line into Google Translate, then retype it in Photoshop.&lt;/strong&gt; Accurate, but it's a 20-minute job for one image, and you still have to match fonts and rebuild the layout by hand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Translate's camera app.&lt;/strong&gt; Fine for reading on the spot, but the live overlay is blurry and you can't export a clean, translated image to send to someone else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI image editors that "translate."&lt;/strong&gt; Most of them give you back a wall of extracted text, not an image — the design is gone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The job isn't "understand the words." The job is "give me the same image, readable, in my language." That means the translation has to land exactly where the original text was, in something that looks like the original style.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 60-second workflow
&lt;/h2&gt;

&lt;p&gt;Everything below runs in the browser at &lt;a href="https://photext.ai" rel="noopener noreferrer"&gt;photext.ai&lt;/a&gt; — no install, no account needed for the standard mode.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Upload and pick your languages
&lt;/h3&gt;

&lt;p&gt;Drop the image into the translator (JPG, PNG, JPEG, or WEBP — screenshots and phone photos both work). Select the source language and the target language. That's the entire setup; there's no text-tool to configure, no boxes to draw.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu3mlvfibzc8o440zwy2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu3mlvfibzc8o440zwy2u.png" alt="PhoText editor running in the browser" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;PhoText runs entirely in your browser — upload an image, pick source and target languages, and the AI handles the rest.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Let the AI replace the text in place
&lt;/h3&gt;

&lt;p&gt;This is the part that makes it a one-minute job instead of a twenty-minute one. The tool detects the text regions, translates them, then erases the original words, reconstructs the background behind them, and sets the translation back in the same position, size, and style. Usually takes a few seconds.&lt;/p&gt;

&lt;p&gt;What you download is a finished image — the menu still looks like the menu, the screenshot still looks like the screenshot — not a separate text dump.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft6reasbxlwjv02opfl31.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft6reasbxlwjv02opfl31.png" alt="Before and after: text replaced in place with layout preserved" width="799" height="221"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;In-place replacement keeps the layout intact — translation works the same way: erase the original, rebuild the background, set the new words in matching style.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Proofread on the picture, then download
&lt;/h3&gt;

&lt;p&gt;Machine translation is good, not perfect, so this step takes thirty seconds and saves embarrassment. Click any translated line directly on the image to correct the wording, adjust the font, color, or size if something looks off, then download.&lt;/p&gt;

&lt;p&gt;Proofreading on the image itself (instead of in a text box) is the underrated part: you see immediately if a line wraps badly or a label is too long for its button.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this actually saves you
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Restaurant menus and signs when traveling.&lt;/strong&gt; Photograph the menu, translate it in the app, read it at the table. Works for museum plaques, train station notices, anything fixed to a wall.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Receipts and invoices for expense reports.&lt;/strong&gt; Foreign-language receipts are the #1 reason finance teams kick expense reports back. A translated image of the receipt attached next to the original ends the argument.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Localizing UI screenshots.&lt;/strong&gt; If you ship a product in multiple languages, you need mock screenshots of every screen in every language. Translating the actual screenshot beats rebuilding it in Figma every time — the layout is already correct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Supplier photos and product labels.&lt;/strong&gt; You get a spec sheet or a label photo in another language. Translate the image, not the document, so you can point at the exact field you're asking about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comics and memes.&lt;/strong&gt; The format that made this workflow famous: keep the art, swap the words. Speech bubbles are the perfect use case for in-place translation because the layout is the joke.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips that make the difference
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start with a sharp photo.&lt;/strong&gt; Blurry source text is the #1 failure mode for any image translation. If the text is readable to you, it's readable to the AI. Phone flash at an angle beats a dark ambient shot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch the word-length direction.&lt;/strong&gt; English → German makes everything longer; Japanese → English usually makes it shorter. The tool adjusts sizing automatically, but dense paragraphs in an expanding language may need a font-size nudge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proofread proper nouns and brand names.&lt;/strong&gt; Machine translation loves to "helpfully" translate product names and place names. A restaurant called "Red Lantern" doesn't need to become the word "lantern" in your language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Busy backgrounds?&lt;/strong&gt; The standard mode is free and handles most screenshots, menus, and documents. If the text sits on a complex photo (text over a crowd scene, patterned packaging), the paid smart/advanced modes redraw those backgrounds more cleanly. For the flat UI of a screenshot, standard is plenty.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screenshots upload best as PNG.&lt;/strong&gt; JPG compression around small UI text adds artifacts that slow down detection. PNG is lossless — use it when you have the choice.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is translating text in an image free?&lt;/strong&gt;&lt;br&gt;
PhoText's standard translation mode is free — upload an image, pick source and target language, and download the translated image without installing anything. It covers 100+ languages. Paid smart/advanced modes exist for trickier cases, like redrawing complex backgrounds behind the text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does the translated image keep the original layout?&lt;/strong&gt;&lt;br&gt;
Yes. The AI erases the original text, restores the background behind it, then sets the translation in a matching position, size and style. Screenshots, product photos, posters, and comics keep their design — you download a finished image, not extracted text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which languages can I translate between?&lt;/strong&gt;&lt;br&gt;
Over 100 languages, including English, Chinese, Japanese, Korean, French, German, Spanish, and Portuguese, in either direction — for example Japanese to English, or English to Chinese.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens to my uploaded image?&lt;/strong&gt;&lt;br&gt;
Images from visitors are kept for 24 hours; signed-in users get 30 days. Everything is deleted automatically, and all transfers are encrypted.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>ai</category>
      <category>productivity</category>
      <category>localization</category>
    </item>
    <item>
      <title>5 AI Image Text Editors Compared: Which One Should You Use in 2026?</title>
      <dc:creator>Jarvis</dc:creator>
      <pubDate>Wed, 07 Oct 2026 16:00:26 +0000</pubDate>
      <link>https://dev.to/jaweii/5-ai-image-text-editors-compared-which-one-should-you-use-in-2026-1m8h</link>
      <guid>https://dev.to/jaweii/5-ai-image-text-editors-compared-which-one-should-you-use-in-2026-1m8h</guid>
      <description>&lt;p&gt;&lt;strong&gt;Quick answer:&lt;/strong&gt; If you just need to change words already in a picture, all five tools below can do it without Photoshop. &lt;a href="https://photext.ai" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; and EditTextImage are the most focused on this single job: upload, click the text, retype, download. Codia is the pick when you want the words back as real editable design layers. Musely is strongest for screenshots and flyers. Media.io works if you already live inside its all-in-one media suite. For a one-off typo fix, try the free tiers of two tools on the same image before you pay for anything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; This comparison was written by the &lt;a href="https://photext.ai" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; team. We tested and researched each tool from its public pages in October 2026. Pricing changes, so check the vendor's own pricing page before you buy. We only link to our own site — search the other tool names if you want to try them.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we evaluated
&lt;/h2&gt;

&lt;p&gt;We judged each tool on five things that actually matter for this task: (1) can it replace text &lt;em&gt;inside&lt;/em&gt; a rendered image (not just add captions on top), (2) how well it matches the original font, color, and effects, (3) how much you can do for free, (4) price per edit once you pay, and (5) how fast a normal person goes from upload to download.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://photext.ai" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; — the focused free option
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Quick answer:&lt;/strong&gt; PhoText is a free online tool built for one job: editing text that's already inside an image. You upload a screenshot, poster, or photo, click directly on the words, delete them, and retype. The tool reconstructs the background where the old letters were and matches the surrounding style. No account, no download, no Photoshop skills.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best for:&lt;/strong&gt; quick typo fixes in screenshots, translated app screenshots, fixing garbled text in AI-generated images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How it works:&lt;/strong&gt; click-to-edit workflow — text regions become editable layers; font recognition, eyedropper color sampling, and effect matching keep the new words consistent with the original.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free tier:&lt;/strong&gt; free to use online; no subscription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch out for:&lt;/strong&gt; it's a specialist, not a full photo editor — if you need layers, masks, and compositing, pair it with a real editor.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. EditTextImage — the polished credit-based specialist
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Quick answer:&lt;/strong&gt; EditTextImage does in-place AI text replacement while preserving font, color, size, perspective, and background. Upload, type the original text and the replacement, and get a result in about 12 seconds. It also ships a Chrome extension with a right-click "edit text in this image" flow for any image on the web.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best for:&lt;/strong&gt; marketing teams doing recurring one-off edits — headline swaps, date rolls, sale-badge changes — who want predictable per-edit pricing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing:&lt;/strong&gt; no subscription; one-time credit packs that never expire — $14.90 for 40 credits, $26.90 for 100, $39.90 for 180. One credit per standard edit, so roughly $0.22–$0.37 per edit depending on the pack. Failed generations are automatically refunded. New accounts get 1 free credit with no credit card; the free edit renders at 1K resolution with no watermark.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch out for:&lt;/strong&gt; credit packs are the only paid path, so heavy daily users should do the math against a subscription tool. It refuses edits to IDs, official documents, and bank statements — a plus for responsible use, a limit if your use case is document-adjacent.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Codia — the "give me back my design file" option
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Quick answer:&lt;/strong&gt; Codia takes a different approach: instead of repainting pixels in place, its AI detects the words in the image and rebuilds them as editable text layers — text, images, and shapes separated like the original design file. You then rewrite the copy in its photo editor with full control over fonts, colors, and layer positions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best for:&lt;/strong&gt; designers who want control after the AI step — changing wording &lt;em&gt;and&lt;/em&gt; restyling it, or localizing a design into another language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standout features:&lt;/strong&gt; 1:1 typography reconstruction (font weight, size, alignment, color, spacing, hierarchy) and text recognition across 108 languages, which makes it genuinely useful for multilingual screenshot and poster localization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free tier:&lt;/strong&gt; the photo text editor is free to use online; Codia's broader design-to-code platform has paid plans starting around $29/month, so check which product you're signing up for.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch out for:&lt;/strong&gt; more steps than a pure one-click replacer — the layer-based workflow is powerful but slower for a single typo fix.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Musely — the screenshot and flyer specialist
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Quick answer:&lt;/strong&gt; Musely edits text in images from plain-language instructions, with dedicated presets for screenshots and flyers. Its screenshot editor auto-detects which platform a screenshot came from (Windows, macOS, iOS, Android, web, Linux) and replicates each system's font rendering; the flyer editor has presets for event details, headlines, and contact info.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best for:&lt;/strong&gt; product and marketing teams editing lots of screenshots (demo customization, localization previews) or event flyers with styled lettering (shadows, outlines, glows).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing:&lt;/strong&gt; free tier to start; Creator Plan from $19.90/month for higher volume. Outputs up to 4K for screenshots.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch out for:&lt;/strong&gt; it's part of a broader AI photo-editing suite, so the text-editing experience is one tool among many — great if you also need object removal and background swaps, less single-purpose than the tools above.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Media.io — the all-in-one suite that includes text editing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Quick answer:&lt;/strong&gt; Media.io is Wondershare's all-in-one AI media suite (video, image, audio), and its prompt-based AI text replacer is one feature inside it: describe the change in plain words, like replacing one word with another on a poster or menu. Free credits on signup let you try it, and downloads come without watermarks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best for:&lt;/strong&gt; creators who already use Media.io for video/audio work and want text fixes in the same subscription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing:&lt;/strong&gt; free tier with daily limits; paid plans around $10–$20/month depending on the tier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch out for:&lt;/strong&gt; text editing is not its specialty — if this is the &lt;em&gt;only&lt;/em&gt; thing you need, a dedicated tool will be faster and cheaper.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Side-by-side comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;PhoText&lt;/th&gt;
&lt;th&gt;EditTextImage&lt;/th&gt;
&lt;th&gt;Codia&lt;/th&gt;
&lt;th&gt;Musely&lt;/th&gt;
&lt;th&gt;Media.io&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core approach&lt;/td&gt;
&lt;td&gt;Click text, retype in place&lt;/td&gt;
&lt;td&gt;Type original + replacement, AI re-renders&lt;/td&gt;
&lt;td&gt;Rebuilds text as editable layers&lt;/td&gt;
&lt;td&gt;Natural-language instructions + presets&lt;/td&gt;
&lt;td&gt;Prompt-based, inside a media suite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Font/style matching&lt;/td&gt;
&lt;td&gt;Font recognition + effect matching&lt;/td&gt;
&lt;td&gt;Font, color, size, perspective preserved&lt;/td&gt;
&lt;td&gt;1:1 typography reconstruction&lt;/td&gt;
&lt;td&gt;Platform-aware font rendering (screenshots)&lt;/td&gt;
&lt;td&gt;Basic style preservation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free tier&lt;/td&gt;
&lt;td&gt;Free to use&lt;/td&gt;
&lt;td&gt;1 free edit, no watermark&lt;/td&gt;
&lt;td&gt;Free photo text editor&lt;/td&gt;
&lt;td&gt;Free tier to start&lt;/td&gt;
&lt;td&gt;Free credits on signup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paid model&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Credit packs $14.90–$39.90 (never expire)&lt;/td&gt;
&lt;td&gt;Free editor; platform plans from ~$29/mo&lt;/td&gt;
&lt;td&gt;From $19.90/mo&lt;/td&gt;
&lt;td&gt;~$10–$20/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Approx. cost per text edit&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;~$0.22–$0.37&lt;/td&gt;
&lt;td&gt;Free (editor)&lt;/td&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Screenshot specialist&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes (6 platforms)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multilingual&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;108 languages&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Fast free typo fixes&lt;/td&gt;
&lt;td&gt;Predictable pay-per-edit&lt;/td&gt;
&lt;td&gt;Design-layer control&lt;/td&gt;
&lt;td&gt;Screenshot/flyer batches&lt;/td&gt;
&lt;td&gt;All-in-one media users&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Which one should you pick?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One typo in a screenshot, right now, for free:&lt;/strong&gt; PhoText. Upload, click the word, retype, download.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A few edits a week and you want honest per-edit pricing:&lt;/strong&gt; EditTextImage. Credit packs never expire, failed generations are refunded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You need the text back as real editable layers:&lt;/strong&gt; Codia. Rewrite and restyle like it's still a design file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dozens of screenshots or flyers a month:&lt;/strong&gt; Musely. Platform-aware rendering and batch-friendly presets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You already pay for a media suite:&lt;/strong&gt; Media.io. Don't add another subscription for one feature.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the advice that applies to all five: run the &lt;em&gt;same&lt;/em&gt; real image through two free tiers before you pay. Price per edit means nothing if the first attempt fails — a free edit that works first try beats a cheap edit you run four times.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is the best free AI image text editor?&lt;/strong&gt;&lt;br&gt;
For a quick free fix, PhoText and Codia's photo text editor both work in the browser at no cost. EditTextImage gives one free watermark-free edit, and Media.io and Musely have free tiers with limits. "Best" depends on your image: try two free tiers on the same file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can AI really match the original font in an image?&lt;/strong&gt;&lt;br&gt;
Yes, within limits. Modern tools sample typography from the visible pixels — font, weight, size, color, effects — and re-render your new text to match. Clean, legible text on flat backgrounds works best; handwriting and heavily stylized scripts are still hard for every tool on this list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I still need Photoshop to edit text in images?&lt;/strong&gt;&lt;br&gt;
Only for the hard cases: full layout redesigns, compositing, or pixel-perfect print work. For changing words inside an existing image — typo fixes, translations, date updates, AI-image gibberish — the tools above finish in about a minute with no design skills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are AI image text editors safe to use for screenshots with personal data?&lt;/strong&gt;&lt;br&gt;
Treat uploads like any cloud service: don't upload IDs, bank statements, or official documents. EditTextImage explicitly refuses such documents; as a rule, redact personal data before uploading anything anywhere.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Edit Text in Screenshots Without Photoshop</title>
      <dc:creator>Jarvis</dc:creator>
      <pubDate>Wed, 07 Oct 2026 08:34:38 +0000</pubDate>
      <link>https://dev.to/jaweii/how-i-edit-text-in-screenshots-without-photoshop-3cn</link>
      <guid>https://dev.to/jaweii/how-i-edit-text-in-screenshots-without-photoshop-3cn</guid>
      <description>&lt;h1&gt;
  
  
  How I Edit Text in Screenshots Without Photoshop
&lt;/h1&gt;

&lt;p&gt;You know the moment. You take a screenshot of a UI, a slide, or a meme — and then you spot a typo. Or the product name changed. Or you need the same screenshot in another language.&lt;/p&gt;

&lt;p&gt;The "proper" fix is to open Photoshop, erase the old text, clone-stamp the background back together, find a matching font, retype, and export. That's a 20-minute job for a 20-second change. I've been there more times than I care to admit.&lt;/p&gt;

&lt;p&gt;So here's the workflow I actually use now. It takes about two minutes, runs entirely in the browser, and I haven't opened Photoshop for screenshot text edits since.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tool: PhoText
&lt;/h2&gt;

&lt;p&gt;The tool is called &lt;a href="https://photext.ai" rel="noopener noreferrer"&gt;PhoText&lt;/a&gt; — a free, browser-based editor that lets you click on text inside an image and just… edit it. No install, no account needed for the basics. It's freemium: the core text-editing features are free, which covers everything in this tutorial.&lt;/p&gt;

&lt;p&gt;Quick note on what it does, so you know whether it fits your case: click-to-edit text directly on the image, change font/color/size, AI chat-based editing ("make this heading bigger and blue"), font recognition, image translation, watermark removal, OCR text extraction, and PDF-to-image conversion. I mostly use the first three.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step-by-step
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Open it and upload your screenshot
&lt;/h3&gt;

&lt;p&gt;Go to &lt;a href="https://photext.ai" rel="noopener noreferrer"&gt;photext.ai&lt;/a&gt; and drop in your screenshot — PNG or JPG, drag-and-drop or file picker. There's no project setup, no canvas size to configure. The image just opens in the editor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxc2ldm0qgw0tjelisvnk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxc2ldm0qgw0tjelisvnk.jpg" alt="Uploading a screenshot to PhoText" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Click the text you want to change
&lt;/h3&gt;

&lt;p&gt;This is the part that sold me. You literally click on the text in the image and it becomes editable, in place. You don't select a text tool, you don't draw a box — you click the word, and you type.&lt;/p&gt;

&lt;p&gt;Under the hood it's detecting the text regions and rebuilding them as editable layers — the editor lists every detected segment on the side. In practice it just feels like editing a Google Doc that happens to be a screenshot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbocs628948mgve77fbon.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbocs628948mgve77fbon.jpg" alt="PhoText editor with text regions detected, ready to edit" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fix your typo, swap the product name, whatever you need. Hit enter and the change is applied.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Match the font, color, and size
&lt;/h3&gt;

&lt;p&gt;This is where most quick edits fall apart — the new text looks pasted-on because the font doesn't match. PhoText has a font recognition feature: select the text and it suggests fonts that look like the original. It's not always pixel-perfect, but it gets you 90% of the way there in seconds instead of a font-identification rabbit hole.&lt;/p&gt;

&lt;p&gt;Then adjust:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Font&lt;/strong&gt; — pick from the suggested matches or browse the list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Size&lt;/strong&gt; — drag or type a value until it visually matches the surrounding text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Color&lt;/strong&gt; — use the eyedropper to sample the original text color. This one matters more than people think; even a slightly-off black looks wrong.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Take 30 seconds here. It's the difference between "fixed" and "obviously edited."&lt;/p&gt;

&lt;p&gt;Here's a real example — I changed "Wutong Mountain" to "Nanshan Park" on a travel photo, and the tool re-rendered it in the matching style:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxofbwbo0rpvh5ebd7r4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxofbwbo0rpvh5ebd7r4.jpg" alt="After editing: the text was replaced and re-rendered in matching style" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Handle multi-line or background text (if needed)
&lt;/h3&gt;

&lt;p&gt;If the text sits on a busy background — a photo, a gradient — click around it first to check the tool cleaned up the old text properly. In my experience it reconstructs simple backgrounds well. For complex ones, you may need to nudge things or accept a minor artifact. For screenshots (flat UI, solid colors), it's essentially flawless.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Export
&lt;/h3&gt;

&lt;p&gt;Hit export/download and you get your edited image back. Done. The whole thing, from upload to download, is genuinely a two-minute job once you've done it once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two bonus tricks I actually use
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Translating a screenshot.&lt;/strong&gt; The image translation feature keeps the layout and swaps the text into another language. I used this for localizing a settings screen for a side project — it beat rebuilding the screenshot in Figma.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pulling text out with OCR.&lt;/strong&gt; Sometimes I don't want to edit, I just want the text. The OCR extraction grabs all the text from an image in one go. Faster than retyping error messages from a screenshot into a search engine. We've all done that.&lt;/p&gt;

&lt;h2&gt;
  
  
  When I still reach for something else
&lt;/h2&gt;

&lt;p&gt;Honesty section, because no tool does everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If I need full layer-based compositing, photo manipulation, or print work — that's still Photopea (free, browser-based Photoshop alternative) or actual Photoshop.&lt;/li&gt;
&lt;li&gt;If I'm designing from scratch — a poster, a social graphic — Canva is faster because it starts from templates rather than editing an existing image.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PhoText sits in the gap between those: you already have the image, you just need the words in it to say something different. For that specific job, it's the fastest thing I've found.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://photext.ai" rel="noopener noreferrer"&gt;photext.ai&lt;/a&gt;, upload the screenshot.&lt;/li&gt;
&lt;li&gt;Click the text, type your fix.&lt;/li&gt;
&lt;li&gt;Match font (use font recognition), color (eyedropper), size.&lt;/li&gt;
&lt;li&gt;Export. Two minutes, no Photoshop.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you edit screenshot text more than once a month, bookmark it. Future you will thank present you.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>webdev</category>
      <category>ai</category>
      <category>showdev</category>
    </item>
    <item>
      <title>An AI invented an endpoint for our API. We shipped it.</title>
      <dc:creator>Jarvis</dc:creator>
      <pubDate>Wed, 12 Aug 2026 07:06:40 +0000</pubDate>
      <link>https://dev.to/jaweii/an-ai-invented-an-endpoint-for-our-api-we-shipped-it-4mo</link>
      <guid>https://dev.to/jaweii/an-ai-invented-an-endpoint-for-our-api-we-shipped-it-4mo</guid>
      <description>&lt;p&gt;A user sent us a bug report that was really a screenshot of someone else's chat.&lt;br&gt;
They had asked an AI assistant to build a web page that erases text from an&lt;br&gt;
image using our API, and it produced a complete, confident little demo: file&lt;br&gt;
input, preview pane, fetch call, error handling. It did not work. The error it&lt;br&gt;
reported was CORS.&lt;/p&gt;

&lt;p&gt;It was not CORS.&lt;/p&gt;
&lt;h2&gt;
  
  
  What the model got wrong
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST https://erasetext.com/api/mcp/erase
Authorization: Bearer et_…
FormData: image = &amp;lt;File&amp;gt;
→ reads JSON { output_url }
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Our API lives on a different host. The path is &lt;code&gt;/v1/erase&lt;/code&gt;. The documented&lt;br&gt;
field is &lt;code&gt;image_file&lt;/code&gt;. A success returns image bytes, not JSON. And&lt;br&gt;
&lt;code&gt;/api/mcp/erase&lt;/code&gt; did not exist anywhere: the model had welded "MCP" — which we&lt;br&gt;
do run, as JSON-RPC for agent runtimes — onto an HTTP path, which is not what&lt;br&gt;
MCP is. It also invented &lt;code&gt;x/y/w/h&lt;/code&gt; crop parameters, then closed by recommending&lt;br&gt;
a Node proxy to work around the CORS it had diagnosed.&lt;/p&gt;
&lt;h2&gt;
  
  
  What it got right
&lt;/h2&gt;

&lt;p&gt;Everything structural. POST, multipart FormData, a file field, a key in a&lt;br&gt;
header, and a JSON body carrying a URL you can drop straight into an &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;.&lt;br&gt;
That is the average of ten thousand image APIs, and the average is a reasonable&lt;br&gt;
prior. The model was not being careless. It filled the parts of our API it could&lt;br&gt;
not see with the parts almost every other API has.&lt;/p&gt;
&lt;h2&gt;
  
  
  The error was not CORS
&lt;/h2&gt;

&lt;p&gt;Preflight passed, the POST failed, and the browser surfaced an opaque network&lt;br&gt;
error with no readable status. In a console that looks exactly like CORS, and&lt;br&gt;
every assistant will tell you it is CORS. What actually happened is duller: the&lt;br&gt;
marketing domain is a static site, so a POST to an invented path under it never&lt;br&gt;
reached an API at all. Once you see that, the fix stops being about headers.&lt;/p&gt;
&lt;h2&gt;
  
  
  You cannot patch the model
&lt;/h2&gt;

&lt;p&gt;We could have replied with the correct snippet, and that would have fixed one&lt;br&gt;
person. The next assistant, tomorrow, generates the same URL — because it is&lt;br&gt;
generating from the same priors, not from our docs.&lt;/p&gt;

&lt;p&gt;Which reframes the problem: a wrong guess that a thousand people will make is&lt;br&gt;
not a support ticket, it is an unclaimed route on your own domain.&lt;/p&gt;

&lt;p&gt;URLs are cheap. So we made the guess true.&lt;/p&gt;
&lt;h2&gt;
  
  
  What we shipped
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The invented paths — &lt;code&gt;/api/mcp/erase&lt;/code&gt;, &lt;code&gt;/api/erase&lt;/code&gt;, &lt;code&gt;/mcp/erase&lt;/code&gt;, and a bare
&lt;code&gt;/erase&lt;/code&gt; — map to the same upstream as &lt;code&gt;/v1/erase&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Authorization: Bearer et_…&lt;/code&gt; is copied into &lt;code&gt;X-Api-Key&lt;/code&gt;, so either works.&lt;/li&gt;
&lt;li&gt;The form field &lt;code&gt;image&lt;/code&gt; is accepted next to &lt;code&gt;image_file&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The loose paths answer with JSON, including &lt;code&gt;output_url&lt;/code&gt; as a data URL — the
exact shape the generated code was already trying to read.&lt;/li&gt;
&lt;li&gt;The marketing apex routes &lt;code&gt;/api/*&lt;/code&gt; to the API worker, because that is the host
models pick.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The router, in the Cloudflare Worker that fronts the API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;apiUpstreamPath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathname&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pathname&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\/&lt;/span&gt;&lt;span class="sr"&gt;+$/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/erase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
    &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/v1/erase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
    &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/erase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
    &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/mcp/erase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
    &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/mcp/erase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/erase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/account&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/v1/account&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/account&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startsWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/v1/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/** Hallucinated "MCP HTTP" paths: return JSON `{ output_url }` for &amp;lt;img src&amp;gt;. */&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;wantsDemoJson&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pathname&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pathname&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\/&lt;/span&gt;&lt;span class="sr"&gt;+$/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/mcp/erase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/erase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/mcp/erase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Header aliasing is three lines, and worth more than it looks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bearer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/^Bearer&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;et_&lt;/span&gt;&lt;span class="se"&gt;\S&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="sr"&gt;/i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bearer&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;proxied&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;X-Api-Key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;proxied&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;X-Api-Key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;bearer&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The JSON envelope is the part worth explaining. Our real success response is raw&lt;br&gt;
image bytes, which is right for a pipeline and wrong for a generated demo whose&lt;br&gt;
very next line is &lt;code&gt;res.json()&lt;/code&gt;. So on the compatibility paths only, the bytes&lt;br&gt;
get wrapped:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dataUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`data:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;mime&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;;base64,&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;b64&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;output_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;dataUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="c1"&gt;// what the generated code read&lt;/span&gt;
  &lt;span class="na"&gt;output_base64&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;dataUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;// …and its second guess&lt;/span&gt;
  &lt;span class="na"&gt;image_base64&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;b64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;content_type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;mime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One deploy later, the demo that had been pasted at us ran unchanged apart from&lt;br&gt;
the API key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://erasetext.com/api/mcp/erase &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Authorization: Bearer et_…'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;'image=@photo.jpg'&lt;/span&gt;
&lt;span class="c"&gt;# 200 application/json  { "output_url": "data:image/webp;base64,…" }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The rule we did not break
&lt;/h2&gt;

&lt;p&gt;Aliasing a URL costs nothing and changes no behaviour. Accepting an invented&lt;br&gt;
parameter is a different animal. Those &lt;code&gt;x/y/w/h&lt;/code&gt; crop fields are still a &lt;code&gt;400&lt;/code&gt;&lt;br&gt;
with a machine-readable code, because pretending to support them would mean&lt;br&gt;
silently ignoring what a caller asked for.&lt;/p&gt;

&lt;p&gt;That is the line we drew: &lt;strong&gt;honour guesses about where the thing is, refuse&lt;br&gt;
guesses about what the thing does.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Then tell the next model the truth
&lt;/h2&gt;

&lt;p&gt;Aliases are a safety net, not a strategy. In the same week we made the contract&lt;br&gt;
machine-readable where assistants actually look: an OpenAPI document, an&lt;br&gt;
&lt;code&gt;llms.txt&lt;/code&gt; with a plain-language section for browser demos, and a hosted&lt;br&gt;
playground that can be copied wholesale. Our MCP handshake now returns an&lt;br&gt;
instruction that amounts to: &lt;em&gt;if you are generating a web page, do not call this&lt;br&gt;
JSON-RPC endpoint — POST FormData to the HTTP path instead.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A handshake string is one of the few chances you get to correct a model at the&lt;br&gt;
moment it is deciding.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you run an API
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Read failing generated code as traffic data. It tells you which URL the world
believes you have.&lt;/li&gt;
&lt;li&gt;Claim those guesses on your own domains — especially the marketing apex,
before someone else's 404 becomes your bug report.&lt;/li&gt;
&lt;li&gt;Never let "CORS" in an assistant's diagnosis end the investigation. Check the
status code on the real host first.&lt;/li&gt;
&lt;li&gt;Alias paths and headers freely. Do not invent semantics to match a
hallucination.&lt;/li&gt;
&lt;li&gt;Publish the contract where machines read it: OpenAPI, &lt;code&gt;llms.txt&lt;/code&gt;, an MCP
handshake string, and a demo page worth copying.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Our docs still name one canonical call. The aliases exist so that being wrong&lt;br&gt;
about it is survivable.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I work on &lt;a href="https://erasetext.com" rel="noopener noreferrer"&gt;EraseText&lt;/a&gt;, the text-erasure API in these&lt;br&gt;
snippets. Contract: &lt;a href="https://erasetext.com/docs/api/" rel="noopener noreferrer"&gt;docs&lt;/a&gt; ·&lt;br&gt;
&lt;a href="https://api.erasetext.com/demo" rel="noopener noreferrer"&gt;playground&lt;/a&gt; ·&lt;br&gt;
&lt;a href="https://erasetext.com/llms.txt" rel="noopener noreferrer"&gt;llms.txt&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>ai</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
