The JOSM Validator is a core feature of JOSM which checks and fixes invalid data. It can find many problems, it is especially useful for finding geometry errors like invalid multipolygons that may be extremely hard to detect manually. It may also help to discover new types of issues that were earlier unknown to the mapper.
JOSM validator is in nearly all aspects the most powerful and the most useful validator available for mappers. For example, diagnosing broken multipolygon with iD or Vespucci may be extremely frustrating, nearly impossible for large objects. JOSM will often diagnose exactly what and where went wrong.
Warning: Do not map for JOSM Validator. Only fix real errors which you understand and know how to improve correctly!!!
- Yes, JOSM Validator has some false positives, like any other validator. Systematic issues should be reported
Osmose is also powerful and works in a browser - but has significant update lag (24 hours is typical) and reports many irrelevant issues.
- Get JOSM installed and loaded. Starting guide is available at JOSM/Guide. Download some data in your area of interest. For example, a place where a forest is mapped but not appearing on the map due to a broken multipolygon.
- Click on the tick icon in the vertical toolbar to show the validator panel on the right.
- Click on the Validate button at the bottom of the validator panel.
This will check the data and display all errors, categorized as errors, warnings, and other, depending on the severity of the error.
While some of the errors must be manually fixed, most of them can be automatically fixed. Just select the error or errors and click the Fix button to automatically fix them. You can select multiple errors, and all of them will be fixed.
Other usage tips:
- You can select the data you want to validate and ignore anything else (or run validator while not selecting anything to validate all downloaded data)
- In preference settings, you can activate only the tests you need. By default, warning and errors are reported, while information level reports are hidden.
- In preference settings, in the toolbar panel, you can include a validation icon in the horizontal toolbar at the top of the window (does the same as the Validate button on the right hand panel)
- The screenshot shows the validator panel undocked, in a separate window. Do this with the little pin icon if you need more space to see the errors tree.
- In case of the validator reporting things that are not actually a problem, it can be avoided by adding an exception, so report it to the JOSM developers. They fixed and keep fixing massive number of validator bugs making it even better. They also keep adding new detectors, some based on proposed ideas..
These are examples of validations performed by the validator (these rules are present in JOSM validator since 2013, many, many, many, many were added since that time):
|Duplicated nodes||Checks that there are no nodes in the very same location||Merge the nodes into only one, adding the properties from all nodes to the merged one|
|Duplicated way nodes||Checks that ways contain no loop edges (i.e., a single step from a node to itself)||Split the way, and delete the way consisting of the loop edge.|
|Reversed coastline: land not on left side||Checks for coastlines that are not counter-clockwise or that are otherwise misplaced (coastline misused as inland lake)||Reverse coastline|
|Unconnected coastline: coastline ways do not form closed loops||Checks for coastlines ways that are not connected to the end of other coastline ways|
|Unordered coastline: coastline ways are not connected start-to-end||Checks for coastline ways of which either the start is not connected to the end of another coastline or the end is not connected to the start of another coastline||Reverse coastline|
|Incomplete ways||Checks for ways with zero or only one node||Removes the way|
|Check property keys||Checks misspelled property keys. See the User:JLS/speller page for information about misspelled property keys||Replace wrong key with right one|
|Check property values||Checks misspelled property values. Uses the tagging presets file for checking||NONE|
|Empty properties||Checks for properties with empty values||Remove the empty properties|
|Crossing ways||Checks for ways (with highway/railway/waterway tags) that crosses in same layer with no crossing node||Add appropriate layer (and possibly bridge or tunnel)|
|Unordered ways||Checks that all segments in a way are properly ordered||Reorder the way|
|Overlapping (high)ways||Checks for two (high)ways that share the same nodes||Remove the double (high)way|
|Self-intersecting ways||A way intersects itself, possibly sharing same nodes||Try to delete overlapping segments, possibly using cut(p) and unglue(g) ways, and middle mouse button to select from overlapping lines|
|Similar named ways||Checks for ways with very similar names, possibly a typo||NONE|
|Unclosed ways||Checks that way types, which should be closed really are closed||NONE|
|Untagged ways||Checks for untagged ways||NONE|
|Way end node near other highway||Ways end within a few meters, possibly accidentally unconnected ways||If required connect the ways (join ways or merge nodes)|
|Style for outer way mismatches||Within a multipolygon relation,
|Style for inner way equals multipolygon||Within a multipolygon relation the JOSM rendering style of the outer way is the same as the result style of the inner way (all of these depend on the current JOSM setings and user view preferences)||Check if the tags are the same and remove tags from inner way, otherwise NONE|
|Multipolygon is not closed||One possible problem is that there is a multipolygon relation where the members do not form a loop. The other possibility is that there are more than one objects (like a relation and a few nodes) listed together which means what?||Try to order the nodes in the relation ("A→Z") and see where the gaps are, and connect them. Hidden elements may trick you. Prevent polygon from intersecting itself, and remove duplicated nodes or ways. Ensure all parts of the closed area have the same role. If everything looks allright then it's probably due to dark matter, leave it alone or the Universe will be destroyed.|
|Fixme||Checks for any property with the word "fixme" inside||NONE|
|Highway without a reference||Checks if there is a ref tag for highways that are tagged tertiary. Not always required, see for instance NL:Map_Features#Wegen||Add ref property or ignore|
|Key 'x' invalid. - ...|
|Nodes with the same name||Multiple nodes use the same name, possibly duplicates||NONE|
|Overlapping areas||Areas overlap|
|Unknown property value||Checks for proper use of tags (only those known to JOSM)||Remove or change incorrectly used tag|
|Untagged and unconnected nodes||Checks rogue nodes (possible remnants of redaction bot)||Delete unused nodes when they have no further tags (or try to reconstruct redacted objects)|
|No style in multipolygon relation||The multipolygon relation is missing a tag describing what it is/represents||For a building, add building=yes to the relation etc. See also Relation:multipolygon|
Custom validator rules
Users can create custom validation rules through MapCSS-based custom validator files. Simple documentation for JOSM's validator syntax can be found at JOSM/MapCSS Validator Syntax.
The Validator's source code can be viewed at http://josm.openstreetmap.de/browser/josm/trunk/src/org/openstreetmap/josm/data/validation/tests and https://josm.openstreetmap.de/browser/josm/trunk/resources/data/validator
Wishes for new features or bug reports should be reported at the bug tracker of JOSM.
#15182 tracks progress (stalled for now) to make JOSM validator available as standalone headless program.