<?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: Fix Quotes</title>
    <description>The latest articles on DEV Community by Fix Quotes (@fixquotes).</description>
    <link>https://dev.to/fixquotes</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%2F4070055%2F5ed0a5bb-0742-4dc3-88ff-c8b67ca8a9d1.png</url>
      <title>DEV Community: Fix Quotes</title>
      <link>https://dev.to/fixquotes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fixquotes"/>
    <language>en</language>
    <item>
      <title>I got tired of leaving Chrome just to read a minified file</title>
      <dc:creator>Fix Quotes</dc:creator>
      <pubDate>Wed, 26 Aug 2026 18:48:00 +0000</pubDate>
      <link>https://dev.to/fixquotes/i-got-tired-of-leaving-chrome-just-to-read-a-minified-file-2n72</link>
      <guid>https://dev.to/fixquotes/i-got-tired-of-leaving-chrome-just-to-read-a-minified-file-2n72</guid>
      <description>&lt;p&gt;There is a tiny part of Chrome that I have always liked: right-click a page, choose &lt;strong&gt;View page source&lt;/strong&gt;, and suddenly the HTML is at least readable enough to inspect.&lt;/p&gt;

&lt;p&gt;Then I click a linked JavaScript or CSS file and run into the other version of the web: one enormous line of minified code. No structure, no breathing room, no useful way to find the thing I was looking for.&lt;/p&gt;

&lt;p&gt;My usual detour used to be predictable:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Copy the file.&lt;/li&gt;
&lt;li&gt;Find an online unminifier.&lt;/li&gt;
&lt;li&gt;Paste it there.&lt;/li&gt;
&lt;li&gt;Copy the result into something that gives me syntax colours and folding.&lt;/li&gt;
&lt;li&gt;Try to remember what I was actually investigating.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Yes, I know I can open VS Code. I do that when I am editing, debugging a project, or working with a local checkout. But when I am already looking at a file in the browser, I often just want to read it quickly without leaving the tab.&lt;/p&gt;

&lt;p&gt;That is why I built &lt;a href="https://prettify.cloud/" rel="noopener noreferrer"&gt;CodePrettify&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  I wanted the browser to be the place where I read browser files
&lt;/h2&gt;

&lt;p&gt;CodePrettify is a browser extension and Windows app that turns supported raw files into a local, read-only workspace. The browser extension recognises supported resources by URL or HTTP content type, then replaces the plain raw-text view with a formatted one. Ordinary HTML pages are deliberately left alone.&lt;/p&gt;

&lt;p&gt;For a minified JavaScript bundle, that means proper indentation, syntax highlighting, folding, line numbers, search, a minimap, and a switch back to the exact original text whenever I need it.&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%2Ffmzi3ugvukzpm1it8ht9.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%2Ffmzi3ugvukzpm1it8ht9.png" alt="A minified JavaScript bundle turned into readable, syntax-highlighted code with folding and a minimap." width="680" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The key word is &lt;strong&gt;read&lt;/strong&gt;. Formatting, searching, validating, comparing, and inspecting do not edit the source file. In the extension, I am looking at the file that is already in the tab, only with a useful viewing layer on top.&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript was the start, not the whole point
&lt;/h2&gt;

&lt;p&gt;The original annoyance was JavaScript and CSS. Both are common, both are often minified, and both are awkward to inspect when the browser gives me raw text.&lt;/p&gt;

&lt;p&gt;But the browser gap is larger than that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JSON responses are usually just a dense wall of data.&lt;/li&gt;
&lt;li&gt;JSONC, JSON Lines, YAML, and TOML configurations are not exactly pleasant to inspect in a raw tab.&lt;/li&gt;
&lt;li&gt;XML, RSS, and Atom have inconsistent browser treatment, especially when I want to switch between a safe rendered view and the actual source.&lt;/li&gt;
&lt;li&gt;Markdown is better read as a document, while still keeping the raw file one click away.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CodePrettify handles JavaScript, TypeScript, CSS, JSON and JSONC, JSON Lines, YAML, TOML, XML, RSS/Atom, and Markdown in the extension. The Windows app adds local HTML and CSV workflows too.&lt;/p&gt;

&lt;p&gt;For markup, the viewer uses a &lt;strong&gt;Rendered / Source&lt;/strong&gt; choice. For code and data, it uses &lt;strong&gt;Prettified / Raw&lt;/strong&gt;. I wanted the original to remain close, not disappear behind a transformation.&lt;/p&gt;

&lt;h2&gt;
  
  
  JSON made the simple viewer grow up
&lt;/h2&gt;

&lt;p&gt;Once a JSON response is formatted, the next thought is usually: “Where is the one field I care about?”&lt;/p&gt;

&lt;p&gt;That became JSON paths, folding, full-text and regex search, go-to-line, table view, schema validation, document statistics, and a way to inspect a value without losing my place. From there, the tool naturally grew into comparison, repair, transformation, code generation, and a diagram view.&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%2Fjsbj0v9vp745nggynesh.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%2Fjsbj0v9vp745nggynesh.png" alt="The document workspace keeps file-specific actions and general tools together without moving the current file out of view." width="680" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The JSON tools still run locally. I can turn a real sample into TypeScript, Zod, C#, Java, Kotlin, Python/Pydantic, Go, Rust, Swift, Dart, or JSON Schema without pasting that data into a web form.&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%2F9wx6vlr8lui0kcnrlaf0.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%2F9wx6vlr8lui0kcnrlaf0.png" alt="CodePrettify turns a JSON document into a connected diagram that can be searched, inspected, and exported locally." width="680" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I also wanted to deal with the files that are almost JSON
&lt;/h2&gt;

&lt;p&gt;A lot of “JSON” is not quite JSON. It has a trailing comma, single quotes, a comment, a missing bracket, or was copied from a log in pieces.&lt;/p&gt;

&lt;p&gt;The JSON Repair &amp;amp; Transform tool is for that uncomfortable middle ground. It tries to produce bounded, representable JSON, records the changes it made, and shows the result rather than quietly pretending the input was fine. When the data cannot be repaired safely, it says so.&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%2Fyl1w846u7b1q7m7jqitv.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%2Fyl1w846u7b1q7m7jqitv.png" alt="JSON Repair &amp;amp; Transform shows the repaired document and records each change instead of hiding it." width="680" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That same preference shows up elsewhere: a semantic JSON compare ignores formatting and object-key order when I need to see real data changes; the security scan can flag hard-coded secrets and endpoints in a bundle without sending the code away; and the JavaScript playground runs in a sandboxed worker with networking disabled.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local means local
&lt;/h2&gt;

&lt;p&gt;Copying a script or response into an online tool is often harmless. It is also a habit I did not want to depend on, especially when I am inspecting a customer response, a token-shaped value, a configuration, or a bundle I have not understood yet.&lt;/p&gt;

&lt;p&gt;CodePrettify keeps formatting, validation, conversion, JSON-to-code generation, repair, diagrams, search, comparison, security scanning, regex processing, and the playground on the device.&lt;/p&gt;

&lt;p&gt;The intentional exception is the HTTP Client: it sends a request directly to the URL I choose only when I press &lt;strong&gt;Send&lt;/strong&gt;. It is not proxied through CodePrettify. In the rare case of a badly decoded legacy JavaScript or TypeScript document, the extension can re-request the exact URL already open to recover valid text; it does not upload the document to FixQuotes.&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%2F2yecplc26j1zeaxh55sg.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%2F2yecplc26j1zeaxh55sg.png" alt="Security Scan flags likely secrets and endpoints locally, with source-line links to the finding." width="680" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  This is not trying to replace VS Code
&lt;/h2&gt;

&lt;p&gt;VS Code is still where I go to edit, run a project, follow references across a repository, and do serious development work.&lt;/p&gt;

&lt;p&gt;CodePrettify is for the shorter path: I am already in Chrome, I am already looking at a raw file, and I need it to be readable now.&lt;/p&gt;

&lt;p&gt;That might be a minified JavaScript bundle behind a button I am debugging, a CSS file that is impossible to scan, an XML feed, a JSON response, a local configuration file, or Markdown documentation. I should not have to bounce through three tools before I can understand it.&lt;/p&gt;

&lt;p&gt;If that sounds familiar, CodePrettify is available for &lt;a href="https://chromewebstore.google.com/detail/codeprettify-js-json-css/ijhgclhipdfnaphhcipbnblgoemcaioj" rel="noopener noreferrer"&gt;Chrome&lt;/a&gt;, &lt;a href="https://microsoftedge.microsoft.com/addons/detail/codeprettify-js-json-c/ckmnkbdicbcbajedhngfaamomlgpgchc" rel="noopener noreferrer"&gt;Edge&lt;/a&gt;, and as a &lt;a href="https://apps.microsoft.com/detail/9p0lp3pt6j7d" rel="noopener noreferrer"&gt;Windows app&lt;/a&gt;. The full &lt;a href="https://prettify.cloud/manual.html" rel="noopener noreferrer"&gt;manual&lt;/a&gt; goes into every supported format and tool.&lt;/p&gt;

&lt;p&gt;There are also short walkthroughs of the &lt;a href="https://youtu.be/uOfxMU0bSw8" rel="noopener noreferrer"&gt;browser extension&lt;/a&gt; and the &lt;a href="https://youtu.be/esatyP2WaZk" rel="noopener noreferrer"&gt;Windows app&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>json</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Why doesn’t Windows have “Rotate left” and “Rotate right” for videos?</title>
      <dc:creator>Fix Quotes</dc:creator>
      <pubDate>Mon, 10 Aug 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/fixquotes/why-doesnt-windows-have-rotate-left-and-rotate-right-for-videos-1c57</link>
      <guid>https://dev.to/fixquotes/why-doesnt-windows-have-rotate-left-and-rotate-right-for-videos-1c57</guid>
      <description>&lt;p&gt;There is a small Windows feature I have loved since Windows 10: right-click a photo in File Explorer, choose &lt;strong&gt;Rotate right&lt;/strong&gt; or &lt;strong&gt;Rotate left&lt;/strong&gt;, and move on with my day.&lt;/p&gt;

&lt;p&gt;No Photoshop. No export dialog. No choosing a new file name. It was such a good little feature that it made me wonder why the exact same thing was missing for video.&lt;/p&gt;

&lt;p&gt;Then came the real irritation: Snapchat videos shot on an iPhone, synced to OneDrive, and sitting in File Explorer in the wrong orientation. You can play them that way, send them that way, and eventually somebody will ask why the video is sideways.&lt;/p&gt;

&lt;p&gt;There are two obvious fixes, and both have annoyed me.&lt;/p&gt;

&lt;p&gt;The first is a small video rotator that only changes the orientation flag. It is almost perfect: fast, no re-encode, and no questions. Until I send the file to someone else, play it on Plex, upload it somewhere, or open it in software that ignores the flag. Then the old problem comes back.&lt;/p&gt;

&lt;p&gt;The second is proper video-editing software. It has a Rotate button, which is great. Then I press Ctrl+S and get a long list of questions: output format, FPS, bitrate, encoder, audio, quality, naming, destination. I only wanted to turn the video 90 degrees.&lt;/p&gt;

&lt;p&gt;That is the frustration that made me build &lt;a href="https://clipturn.app/" rel="noopener noreferrer"&gt;ClipTurn&lt;/a&gt;. I wanted the File Explorer photo experience for video: right-click, choose a direction, and get a result I can actually use elsewhere.&lt;/p&gt;

&lt;p&gt;So why did Microsoft not just add the same two commands for video? I think the short answer is that video is a much harder promise than a JPEG.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why video rotation is not just a button
&lt;/h2&gt;

&lt;p&gt;A JPEG can lose a little quality when it is saved again, but it is still one image. A video can contain compressed picture frames, audio streams, subtitles, timing, colour information, HDR metadata, extra tracks, and a container with its own rules.&lt;/p&gt;

&lt;p&gt;To make a sideways video reliably upright everywhere, ClipTurn turns the stored picture itself. It does not just set an orientation instruction and hope every downstream player honours it.&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%2Feyp2ie366vtl2hggmezr.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%2Feyp2ie366vtl2hggmezr.png" alt="ClipTurn workflow in File Explorer: choose a direction, wait for the worker, then read the verified result." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That means I have to be honest about the compromise. With normal compressed video, a physical turn requires decoding the picture, rotating it, and encoding it again. That is not mathematically lossless, and I do not want to pretend otherwise.&lt;/p&gt;

&lt;p&gt;The goal is not “lossless at any cost.” The goal is a quality-preserving result, in the same codec when possible, without turning a simple rotation into an export wizard. When that cannot be done faithfully, ClipTurn explains why instead of silently making a worse file.&lt;/p&gt;

&lt;h2&gt;
  
  
  I still wanted right-click to feel simple
&lt;/h2&gt;

&lt;p&gt;The fast path is intentionally boring: right-click a supported video in File Explorer, open &lt;strong&gt;ClipTurn – Video Rotator&lt;/strong&gt;, choose &lt;strong&gt;Rotate video left&lt;/strong&gt; or &lt;strong&gt;Rotate video right&lt;/strong&gt;, and read the result card.&lt;/p&gt;

&lt;p&gt;That is it from the user’s point of view. There is no account, no upload, no codec picker, and no list of quality sliders.&lt;/p&gt;

&lt;p&gt;If I want more control, I can open the video in ClipTurn first, preview the direction, inspect the file, choose a backup, and then save one deliberate rotation.&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%2Fag5fe8tl0ehxfitci42s.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%2Fag5fe8tl0ehxfitci42s.png" alt="The single-video flow: preview a direction first, then save one deliberate rotation." width="800" height="772"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The preview is non-destructive. I can spin the preview left, right, or back to zero as many times as I want. The original is untouched until I select &lt;strong&gt;Save rotation&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that got complicated very quickly
&lt;/h2&gt;

&lt;p&gt;Making the UI simple does not mean the work behind it is simple.&lt;/p&gt;

&lt;p&gt;I did not want ClipTurn to encode over the original while it was still working. A rotation is treated as a small file-replacement transaction instead:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check the source location, identity, attributes, and request.&lt;/li&gt;
&lt;li&gt;Record a full SHA-256 fingerprint of the source.&lt;/li&gt;
&lt;li&gt;Build the turned video as a separate candidate.&lt;/li&gt;
&lt;li&gt;Decode and verify that candidate: its geometry, physical turn, audio path, promised tracks, container details, and supported metadata.&lt;/li&gt;
&lt;li&gt;Check that the original has not changed underneath the job.&lt;/li&gt;
&lt;li&gt;Stage a same-volume replacement, keep rollback material while it is active, and write the durable result.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If another app, sync process, or person changes the source while ClipTurn is working, it does not overwrite those new bytes. It reports the conflict. It may feel overly cautious for a rotate button, but the file is more important than the button.&lt;/p&gt;

&lt;h2&gt;
  
  
  The codec rabbit hole
&lt;/h2&gt;

&lt;p&gt;The thing I learned most clearly while building this is that a file extension tells you very little.&lt;/p&gt;

&lt;p&gt;An MP4 might be H.264 or HEVC. It might be 8-bit or 10-bit. It might carry HDR, multiple audio tracks, subtitles, camera data, timecode, or a layout that cannot be safely reproduced by the available Windows media components.&lt;/p&gt;

&lt;p&gt;ClipTurn has a few explicit policies rather than a mysterious “best” choice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep codec and quality is the recommended path for normal compressed video.&lt;/li&gt;
&lt;li&gt;Strict and Exact require a sample-exact pixel permutation. In this release, that is for eligible uncompressed packed-pixel AVI—not ordinary phone footage.&lt;/li&gt;
&lt;li&gt;A 10-bit HEVC source never quietly turns into an 8-bit file. If there is no faithful Main10 path, ClipTurn refuses it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The app can also inspect Windows Media Foundation capabilities for H.264, HEVC, VP8, VP9, AV1, and Windows Media paths. That is useful evidence, but it is not a promise that a particular file will work. The actual rotation still has to decode, encode, write, and verify the complete candidate.&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%2F3f0epb7qxavgj68frz20.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%2F3f0epb7qxavgj68frz20.png" alt="System Capabilities shows what this PC has registered—useful evidence, but not a guarantee that every file can be processed." width="800" height="772"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sometimes the correct answer is “I won’t touch this file”
&lt;/h2&gt;

&lt;p&gt;This has been a hard product decision, but an important one.&lt;/p&gt;

&lt;p&gt;ClipTurn refuses files when it cannot prove a safe result: cloud placeholders that are not fully available locally, network or removable storage, read-only sources, unsupported colour geometry, tracks it cannot preserve, duplicate requests for the same physical file, and codec/container combinations that would require an unannounced compromise.&lt;/p&gt;

&lt;p&gt;If a source cannot be safely replaced but the PC can prove a separate copy is possible, ClipTurn stops and presents the exact change before creating anything. The original stays where it is until the user approves the copy.&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%2F09bc1b5ppbwpxrm2opx2.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%2F09bc1b5ppbwpxrm2opx2.png" alt="Reviewed copies make the trade-offs explicit before a separate display-orientation or H.264 copy is created." width="800" height="772"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would rather show a clear limitation than show a fake success message after silently dropping something important.&lt;/p&gt;

&lt;h2&gt;
  
  
  A folder should not hide the awkward files
&lt;/h2&gt;

&lt;p&gt;I also wanted batch work to be honest.&lt;/p&gt;

&lt;p&gt;Batch Rotate does not treat a folder as one all-or-nothing operation. Every row is its own job. One video can rotate, another can be safely refused, and another can wait for a reviewed-copy decision without hiding or stopping the rest.&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%2Fr17jef7cccfv6p99gi9d.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%2Fr17jef7cccfv6p99gi9d.png" alt="Batch Rotate keeps each file’s status visible, including verified rotations and files that need review." width="800" height="772"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The selected direction and settings are snapshotted at the start. Concurrency is bounded. Stopping a batch stops new jobs from starting, rather than pretending active processing vanished.&lt;/p&gt;

&lt;h2&gt;
  
  
  I wanted proof for the awkward cases
&lt;/h2&gt;

&lt;p&gt;After a verified result, ClipTurn writes a local receipt for that exact file version. It records the file identity, timestamps, length, SHA-256, direction, app version, and the checks it established.&lt;/p&gt;

&lt;p&gt;The receipt is not embedded in the video or attached as a sidecar file. If the video changes later, the old receipt is stale. In Details, I can do a quick identity, size, and time check, or run a full hash recheck if I need stronger evidence.&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%2F981uo93gf05q7ck9y5wq.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%2F981uo93gf05q7ck9y5wq.png" alt="Video Details shows the current file information and the local verification state for that exact version." width="800" height="772"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That matters to me. “I processed a file with this name last week” is not the same thing as “this exact file was verified.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy is part of the point
&lt;/h2&gt;

&lt;p&gt;These are often personal videos. ClipTurn processes selected files on the PC; it does not require an account or upload videos to FixQuotes. It also ships without analytics, advertising, telemetry, or automatic crash reporting.&lt;/p&gt;

&lt;p&gt;That does not mean the whole world disappears: Windows, Microsoft Store, a sync provider such as OneDrive, or a support channel I choose can have their own data practices. But ClipTurn itself should not need my video to leave the computer just to rotate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Back to the original question
&lt;/h2&gt;

&lt;p&gt;I still think Windows should have native Rotate Left and Rotate Right for video.&lt;/p&gt;

&lt;p&gt;But I also understand why that is not as simple as it looked when I first right-clicked a photo. A reliable video rotation command has to decide what it can preserve, what it cannot, when it needs a separate copy, and when it should leave the source alone.&lt;/p&gt;

&lt;p&gt;ClipTurn is my answer to that gap: make the common case as simple as the photo command, but do not hide the complicated bits when they matter.&lt;/p&gt;

&lt;p&gt;If you have a sideways video on Windows 11, &lt;a href="https://apps.microsoft.com/detail/9PGB9JVBRGLB" rel="noopener noreferrer"&gt;ClipTurn is currently free in the Microsoft Store&lt;/a&gt;. The complete &lt;a href="https://clipturn.app/manual.html" rel="noopener noreferrer"&gt;manual&lt;/a&gt; covers supported formats, policies, recovery behaviour, and limits in more detail.&lt;/p&gt;

&lt;p&gt;And here is a short walkthrough:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/-_kdhLjnPy0" rel="noopener noreferrer"&gt;https://youtu.be/-_kdhLjnPy0&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devlog</category>
      <category>privacy</category>
      <category>showdev</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
