-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathabout.html
More file actions
132 lines (121 loc) · 9.48 KB
/
Copy pathabout.html
File metadata and controls
132 lines (121 loc) · 9.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>About Diffhero | Diffhero</title>
<meta name="description" content="What Diffhero is, who makes it, and why it's free.">
<link rel="canonical" href="https://diffhero.app/about">
<meta property="og:title" content="About Diffhero">
<meta property="og:description" content="What Diffhero is, who makes it, and why it's free.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://diffhero.app/about">
<meta property="og:image" content="https://diffhero.app/assets/og-image.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://diffhero.app/assets/og-image.png">
<link rel="icon" type="image/svg+xml" href="./assets/favicon.svg">
<meta name="theme-color" content="#0a0d12">
<meta name="msvalidate.01" content="5A4EFD6B7BD09C4C115B7ACCF3688E1C">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="./assets/style.css?v=f12ce522">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-Q907KGWEP4"></script>
<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}
gtag('js',new Date());gtag('config','G-Q907KGWEP4');</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebApplication","name":"Diffhero","url":"https://diffhero.app/about","description":"What Diffhero is, who makes it, and why it's free.","applicationCategory":"UtilitiesApplication","operatingSystem":"Any (web browser)","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"author":{"@type":"Person","name":"Bruno FK","url":"https://brunofk.dev"},"datePublished":"2026-07-18","dateModified":"2026-07-24"}</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Diffhero","item":"https://diffhero.app/"},{"@type":"ListItem","position":2,"name":"About Diffhero","item":"https://diffhero.app/about"}]}</script>
<script data-grow-initializer="">
!(function(){window.growMe||((window.growMe=function(e){window.growMe._.push(e);}),(window.growMe._=[]));var e=document.createElement("script");(e.type="text/javascript"),(e.src="https://faves.grow.me/main.js"),(e.defer=!0),e.setAttribute("data-grow-faves-site-id","U2l0ZTpiZTY1ZGY2My0zODg3LTQwOTEtYjliMi0zNTgzODU3ZWIxZTY=");var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t);})();
</script>
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar">
<a class="logo" href="/">
<svg class="logo-mark" width="20" height="20" viewBox="0 0 22 22" fill="none" aria-hidden="true"><rect x="2" y="3" width="7" height="16" fill="currentColor"/><rect x="13" y="7" width="7" height="12" fill="currentColor" opacity="0.45"/></svg>
Diffhero
</a>
<nav class="topnav" aria-label="Main">
<a href="/">Tools</a>
<a href="/guides">Guides</a>
<a href="/diffchecker-alternative">Compare</a>
<a href="/about">About</a>
</nav>
<div class="topbar-end">
<span class="topbar-note">no upload · no account</span>
<button type="button" class="theme-toggle" id="themeToggle" aria-label="Toggle light/dark">
<svg class="icon-sun" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2.5M12 19.5V22M4.2 4.2l1.8 1.8M18 18l1.8 1.8M2 12h2.5M19.5 12H22M4.2 19.8 6 18M18 6l1.8-1.8"/></svg>
<svg class="icon-moon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.2 14.6A8.5 8.5 0 1 1 9.4 3.8a7 7 0 0 0 10.8 10.8Z"/></svg>
</button>
</div>
</header>
<div class="shell shell--docs has-aside">
<nav class="rail" aria-label="Guides and site">
<div class="rail-in">
<p class="rail-title"><a href="/guides">Guides</a></p>
<section class="rail-group">
<p class="rail-head" id="rail-reading">Reading</p>
<ul class="rail-list is-here" aria-labelledby="rail-reading">
<li><a href="/guides/what-is-a-diff">What is a diff? How software compares two versions of a file</a></li>
<li><a href="/guides/how-to-review-a-pull-request">How to review a pull request well</a></li>
<li><a href="/guides/merge-conflicts-explained">Merge conflicts explained, and how to resolve them without losing work</a></li>
<li><a href="/guides/diffing-config-files-safely">How to diff config files without breaking production</a></li>
<li><a href="/guides/line-word-and-semantic-diffs">Line, word and semantic diffs: which comparison you actually need</a></li>
<li><a href="/guides/client-side-tools-and-privacy">Why “nothing leaves your browser” matters for developer tools</a></li>
<li><a href="/guides/comparing-documents-without-track-changes">How to compare two documents when Track Changes wasn't on</a></li>
</ul>
</section>
<section class="rail-group">
<p class="rail-head" id="rail-site">Site</p>
<ul class="rail-list is-here" aria-labelledby="rail-site">
<li><a href="/diffchecker-alternative">Diffchecker alternative</a></li>
<li><a href="/embed">Embed the diff checker</a></li>
<li><a href="/about" aria-current="page">About</a></li>
<li><a href="/privacy">Privacy</a></li>
<li><a href="/terms">Terms</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</section>
<section class="rail-group">
<p class="rail-head" id="rail-tools">Tools</p>
<ul class="rail-list is-here" aria-labelledby="rail-tools">
<li><a href="/">All 30 diff tools →</a></li>
</ul>
</section>
</div>
</nav>
<main class="content" id="main">
<section class="prose">
<h1>About Diffhero</h1>
<p>Diffhero is a small, single-purpose tool: paste two versions of any text or code and instantly see what changed — every added, removed and altered line, with the exact changed words highlighted inline. It's the same idea as the <code>diff</code> command or the review view on a code host, distilled to one page with nothing to install and nothing to sign up for.</p>
<h2 id="who-makes-it">Who makes it</h2>
<p>Diffhero is built and maintained independently by a working software developer, not a company or a funded startup — someone who reaches for a diff tool most days and got tired of the ones that wall the useful parts behind a signup or upload your code to a server to do the comparison. It's a focused side project, kept deliberately small. Bug reports and feature requests go straight to the person who maintains it, at <a href="mailto:hello@diffhero.app">hello@diffhero.app</a>.</p>
<h2 id="how-it-works">How it works</h2>
<p>The entire comparison runs in your browser using JavaScript — your text and code are diffed on your own device and never sent anywhere. You can confirm that in your browser's Network tab (you'll see no request carrying your content), and the tool keeps working offline once the page has loaded. That "nothing uploaded" design is the whole point: it means you can safely compare proprietary code, a draft contract, or a config file full of secrets, without handing any of it to a third party. Files you drag in (<code>.txt</code>, <code>.pdf</code>, <code>.docx</code>) are read locally the same way.</p>
<h2 id="why-it-exists">Why it exists</h2>
<p>Because the popular diff checkers each fall down somewhere: some upload your input to a server, some cap you after a few uses, some bury word-level highlighting or file support behind a paywall. Diffhero keeps the genuinely useful features — word-level highlighting, split and unified views, syntax awareness, file drag-and-drop, shareable links and <code>.diff</code> export — free and client-side, with per-format guidance on each tool's page (the real gotchas, like why "ignore whitespace" is dangerous for Python or YAML).</p>
<p>It stays free by showing a single, unobtrusive ad, and nothing more — no upsell, no account, no data collection. Found a bug or want a format supported? <a href="/contact">Get in touch</a>.</p>
</section>
</main>
<aside class="toc" aria-label="On this page">
<div class="toc-in">
<p class="toc-title">On this page</p>
<ol>
<li><a href="#who-makes-it">Who makes it</a></li>
<li><a href="#how-it-works">How it works</a></li>
<li><a href="#why-it-exists">Why it exists</a></li>
</ol>
</div>
</aside>
</div>
<footer>
<div class="foot-in">
<div><span class="fb">Diffhero</span> — See exactly what changed. · <a href="/guides">Guides</a> · <a href="/diffchecker-alternative">Compare</a> · <a href="/about">About</a> · <a href="/privacy">Privacy</a> · <a href="/terms">Terms</a> · <a href="/contact">Contact</a> · <a href="mailto:hello@diffhero.app">hello@diffhero.app</a></div>
<div>Free. No signup, no upload — everything runs in your browser.<br>
Built and maintained by <a href="https://brunofk.dev" rel="author noopener" target="_blank">Bruno FK</a>, an independent developer in Edinburgh.</div>
</div>
</footer>
<script src="./assets/app.js?v=915cb235" defer></script>
</body>
</html>