From OpenStreetMap Wiki
Jump to navigation Jump to search
20231203-164538-ScreenShot OSM-REVERT.png
Author: Kamil Monicz (Zaczero)
License: GNU Affero General Public License v3 (free of charge)
Platform: Web
Status: Active
Version: 1.3.6 (2024-03-20)
Language: English
Website: https://revert.monicz.dev
Source code: Zaczero/osm-revert
Programming languages: Python, HTML, and JavaScript

The next generation OpenStreetMap changeset revert tool

osm-revert is designed to be a direct successor to Revert UI, offering a faster and smarter way to revert changesets on OpenStreetMap.

It utilizes the Overpass API to reduce the amount of API calls, making it faster at reverting changesets. It also has the ability to automatically resolve conflicts, something that its predecessor, RevertUI, could not do. Additionally, it has no limitations on the size of changesets, making it capable of reverting anything.

osm-revert also provides the functionality of filtering specific elements that need to be reverted. This is useful in situations where only certain parts of a changeset require correction.

Users have the option to download a revert .osm file which can be imported into certain editors for further validation or adjustments.



Changeset numbers separated by commas or spaces or both.


Reverts only elements that match the specified filter. It is based on Overpass Query Language.

The filter lets you specify a union of elements that should be reverted.

A match is valid when filter matches an element state before or after the reverted changeset (or both).

When ways are filtered, all of their members (nodes) are always included.


  • node; way; rel; – will revert everything; this is the default value when you don't specify anything
  • node[ford=yes]; – will revert all nodes with ford=yes tag
  • node[ford=yes]; way[!highway]; – will revert all nodes with ford=yes tag and all ways that without highway=* tag
  • rel(id:7532,99517) – will revert relations with IDs 7532 and 99517
  • rel(!id:7532,99517) – will revert relations without IDs 7532 and 99517
  • node[!natural][!advertising]; way; – will revert all nodes without natural=* and advertising=* tags and all ways
  • node[!natural]; node[!advertising]; – will revert all nodes except ones with both tags natural and advertising on one node


Simply your changeset comment.


It will add a comment in the discussion under changesets you're reverting. Consider this when you revert several changesets.

You can optionally specify whether the discussion should be open under all reverted changesets, newest only, or oldest only.

Resolving parent conflicts

In scenarios where an element is edited after the reverting changeset (conflicts), it is possible that the produced changeset size will be greater that the reverting changeset. This may sometimes lead to 10,000 changes size limit being exceeded. The resolve parent conflicts option lets you change this behavior so you are not stuck with >10,000 changes changeset.

  • Forcefully remove conflicting elements: This is the default behavior that is generally more correct but may sometimes lead to exceeded changes limits.
  • Skip conflicting elements (assume they were fixed): This is an alternate behavior that will skip resolving conflicts that lead to exceeded changes limits. Basically, the program will assume that those elements have been fixed in other changesets and require no further work. This behavior is more specialized and should only be used when really needed. Future versions of osm-revert may remove this manual toggle in favor of automatic fallback.

External links