whatisgithub

What is jsdiff?

kpdecker/jsdiff — explained in plain English

Analysis updated 2026-06-24

9,136JavaScriptAudience · developerComplexity · 2/5Setup · easy

In one sentence

A JavaScript library that compares two pieces of text and tells you exactly what changed, which parts were added, deleted, or kept, at character, word, line, or JSON level, in both Node.js and the browser.

Mindmap

mindmap
  root((jsdiff))
    What it does
      Text comparison
      Change detection
      Patch generation
    Diff levels
      Character level
      Word level
      Line level
      JSON level
    Use Cases
      Code review tools
      Merge tools
      Change tracking
    Setup
      npm install
      Browser script tag
      Node.js require
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Show a side-by-side word-level diff of two versions of a document in a browser app.

USE CASE 2

Generate a standard unified patch file from two text strings to apply changes programmatically.

USE CASE 3

Build a merge or review tool that highlights exactly which characters changed between two code snippets.

USE CASE 4

Track and display live edits as a user types by diffing the previous and current value of a text field.

What is it built with?

JavaScriptNode.jsnpm

How does it compare?

kpdecker/jsdiffyagop/node-telegram-bot-apigetstream/winds
Stars9,1369,1459,121
LanguageJavaScriptJavaScriptJavaScript
Setup difficultyeasyeasyhard
Complexity2/52/54/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

So what is it?

jsdiff is a JavaScript library that compares two pieces of text and figures out exactly what changed between them. This is the same basic operation that version control tools like Git use when they show you which lines were added or removed in a file. You give the library an old version of some text and a new version, and it returns a structured description of the differences: which parts were added, which were deleted, and which stayed the same. The library can perform this comparison at several levels of granularity. Character-level diffing looks at each individual character. Word-level diffing treats each word and punctuation mark as a unit, ignoring whitespace differences. Line-level diffing compares full lines at a time, which is how most code diff tools work. There are also modes for comparing sentences, CSS tokens, and JSON data structures. A general array-level mode lets you compare any two arrays of items, using whatever equality check makes sense for your data. Each comparison returns a list of change objects. Every object in the list represents a span of tokens that were either inserted, deleted, or kept unchanged. You can use these objects to build your own display, generate a patch file, or apply a diff to reconstruct the modified text. The library also includes helper functions that format the output as a standard unified diff, the format used by most version control systems. Options let you adjust the comparison behavior. For text comparisons you can turn off case sensitivity, strip trailing carriage returns when comparing files edited on different operating systems, or tell the library to treat newline characters as their own separate tokens. jsdiff works in both Node.js and browsers. It is distributed as an npm package and can also be loaded as a standalone script file that exposes a global variable. The full README is longer than what was shown.

Copy-paste prompts

Prompt 1
Using jsdiff, compare two strings word by word and render the result in a browser with added words in green and removed words in red.
Prompt 2
Show me how to use jsdiff to generate a unified diff patch string from two versions of a JavaScript file, then apply that patch back to the original string.
Prompt 3
I have two JSON objects and I want to see which keys changed. Walk me through using jsdiff's JSON diffing mode to get a structured change list.
Prompt 4
Help me write a Node.js script that reads two text files and prints a line-level diff to the console, ignoring whitespace differences.
Prompt 5
Using jsdiff, build a simple before-after character diff highlighter that works in the browser without any build step.

Frequently asked questions

What is jsdiff?

A JavaScript library that compares two pieces of text and tells you exactly what changed, which parts were added, deleted, or kept, at character, word, line, or JSON level, in both Node.js and the browser.

What language is jsdiff written in?

Mainly JavaScript. The stack also includes JavaScript, Node.js, npm.

How hard is jsdiff to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is jsdiff for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.