Skip to content
Switch branches/tags
This branch is 447 commits ahead, 5 commits behind chrisboulton:master.

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

PHP Diff Class

SensioLabsInsight Codacy Badge

Latest Version Packagist Installs


A comprehensive library for generating differences between two hashable objects (strings or arrays). Generated differences can be rendered in all the standard formats including:

  • Unified
  • Context
  • Side by Side HTML
  • Unified HTML
  • Unified Commandline colored output

The logic behind the core of the diff engine (ie, the sequence matcher) is primarily based on the Python difflib package. The reason for doing so is primarily because of its high degree of accuracy.


composer require jblond/php-diff

Install for cli support

For cli usage you need to install the suggested jblond/php-cli package.


See the Wiki for



Example Use

use jblond\Diff;
use jblond\Diff\Renderer\Html\SideBySide;

// Installed via composer...
require 'vendor/autoload.php';

$sampleA = file_get_contents(dirname(__FILE__).'/a.txt');
$sampleB = file_get_contents(dirname(__FILE__).'/b.txt');

// Options for generating the diff.
$options = [
    'ignoreWhitespace' => true,
    'ignoreCase'       => true,
    'context'          => 2,
    'cliColor'         => true // for cli output

// Initialize the diff class.
$diff = new Diff($sampleA, $sampleB /*, $options */);

// Choose Renderer.
$renderer = new SideBySide([
    'title1' => 'Custom title for sample A',
    'title2' => 'Custom title for sample B',

// Show the output of the difference renderer.
echo $diff->Render($renderer);

// Alternative
// Show the differences or a message.
echo $diff->isIdentical() ? 'No differences found.' : '<pre>' . htmlspecialchars($diff->render($renderer)) . '</pre>' ;

Example Output

File example.php contains a quick demo and can be found in the example/ directory. Included is a light and a dark theme.

HTML Side By Side Example

HTML Side By Side Example

More Example Pictures

HTML Unified Example

HTML Unified Example

Text Unified Example

Text Unified Example

Text Context Example

Text Context Example

Text Unified Console Example

Text Unified Console Example

HTML Side By Side Dark Theme Example

HTML Side By Side Dark Theme Example


Contribution, Issues and feature requests

If you found a bug, or have an idea for new functionality, feel free to report it on the issue tracker - just use search beforehand. Issue tracker

You can also fork this repository and open a PR.

Merge files using jQuery

Xiphe has build a jQuery plugin with that you can merge the compared files. Have a look at jQuery-Merge-for-php-diff .


  • Ability to ignore blank line changes
  • 3 way diff support


Contributors since I forked the repo.

License (BSD License)

see License


composer run-script phpunit
composer run-script php_src
composer run-script php_test


A comprehensive library for generating differences between two strings in multiple formats (unified, side by side HTML etc). Based on the difflib implementation in Python