Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesiTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
With a full OTA update, a device downloads the complete target image. With a delta update, the package instead describes how to build that target from a particular version already installed. bsdiff is one tool for creating such binary patches; it can reduce transfer size when versions share useful structure, but the patch must match the installed base and may be larger than a compressed full image.
What bundle diffing means
In OTA updates, “bundle diffing” is a descriptive term for comparing an old binary bundle or firmware image with a target version, creating a patch, and applying that patch on the device to reconstruct the target. The term does not identify one universally standardized format: classic bsdiff, platform-specific payload operations, and embedded adaptations can use different encodings and assumptions.
Classic bsdiff compares two files and creates a patch intended for bspatch. The patch is tied to its source file: the updater needs the expected old version, not just any installed version. The producer and device-side consumer must also agree on the patch format.
Recommended Free Tools
How bsdiff represents changes
Rather than simply listing every changed byte, classic bsdiff looks for approximate matches between the old and target files. It describes how to construct the target using control instructions, difference data, and extra data. When applying the patch, bspatch reads bytes from the old file, combines them with the difference data, inserts extra data where needed, and writes the reconstructed output. Matches and offsets into the old file are part of the representation.
#1 Best Overall
The command-line workflow is:
bsdiff oldfile newfile patchfile
bspatch oldfile newfile patchfile
The first command creates a patch from the old and new files; the second applies that patch to the old file and writes the new file. The resulting patch is for a compatible bspatch implementation, not automatically for every OTA updater.
Where the patch fits in an OTA update
Diffing is only one operation in an OTA pipeline. A service selects a target release and distributes an update package or payload. The device receives update instructions and data, performs operations such as patch application, verifies the result, and follows platform rules for activating the new version.
Rank #2
The Android Open Source Project describes an A/B update payload as “an opaque blob with the instructions to update to the new version.” In Android’s A/B design, an update is applied to an unused slot while the current system remains available. The update process applies operations, rereads and checks partitions against expected hashes, runs any required post-install step, and marks the new slot active. If the new version does not become successful, the device can return to the old slot. These are Android A/B behaviors, not guarantees of every OTA system.
Android’s OTA size guidance also says Android 9 and later selects the compression algorithm expected to give the best compression results for a patch. This illustrates why patch generation and compression are pipeline choices rather than a promise of a particular reduction. The Android documentation confirms that binary patch operations can appear in OTA payloads, but it does not establish that every operation uses classic BSDIFF40 or that arbitrary bsdiff output can be inserted into an Android payload. Check the exact format expected by the target platform’s tools and updater.
Rank #3
When a delta can save data—and when it cannot
A delta can shrink the download when versions preserve reusable structure and changes are localized. That can matter on constrained connections or across a large device fleet. But the relevant comparison is the delta package against the compressed complete target, not against an uncompressed image. If versions differ substantially, or the patch has significant overhead, the full compressed target may be smaller.
Colin Percival’s 2003 paper reported an average compression factor of 11.6 across 19 pairs of historical DEC UNIX Alpha executable binaries. Excluding the Apache 1.2.4-to-1.3.0 pair, whose versions shared less than half their source code, the reported average was 13.0. These are results for that historical corpus, not expected OTA savings for current firmware. The paper also reports an Apache update case where none of the tested methods beat simply compressing the new binary.
Rank #4
Resource costs and format differences
Patch creation and application have costs beyond download size. The Debian bsdiff manual reports memory use equal to 17 times the old file size and an absolute minimum working set of eight times that size for the implementation it documents. Those implementation-specific figures are not bounds for every current implementation, but they show why build-server memory and device resources need checking.
Free tools Windows power users keep installed
One-click scans. No signup required.
Embedded implementations may make different trade-offs. An ESP32-oriented streaming adaptation explicitly differs from the commonly available version, so “supports bsdiff” is not enough to establish compatibility. Confirm the exact encoding, compression, source-version assumptions, architecture, and updater behavior for the tools on both sides.
Best Value
Android’s A/B documentation gives about 100 KiB of temporary metadata storage for streaming A/B updates in its Android 8.0 documentation context. That is an Android platform figure, not a memory or storage requirement for bsdiff itself.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.How to evaluate an OTA delta design
Test representative releases and device conditions before choosing a delta strategy. Track the complete transfer and operational costs, not just the patch file size:
- Transfer size: Compare the delta package with the compressed full target across realistic version pairs.
- Generation cost: Measure build or release-system time and peak memory.
- Device cost: Budget RAM, temporary storage, CPU time, flash writes, and whether patching can be streamed.
- Compatibility: Verify patch format, required source version, target architecture, compression, and updater implementation.
- Integrity and recovery: Check the reconstructed image before activation, define interruption and retry behavior, and retain a route back to a known-good version.
- Operations: Account for storing source-version variants, creating metadata and payloads, staged rollout, and monitoring failures.
The practical decision is whether measured savings justify the extra release, compatibility, and recovery work. A delta is a transfer optimization, not a substitute for the OTA system that packages, verifies, installs, and recovers the update.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

