CWR Validator

The CWR Validator is a tool for windows validating CWR files according to the CWR v2.1 specification revision 7.

You may ↓ download the tool or read the following brief introduction.


The tool validates CWR-Files strictly against the CWR spec, offering the following features:

  • browsing through the hierarchically structured CWR file
  • display of validation messages with description and line number
  • filter certain types of validation messages
  • create and customize filter presets

In contrast to our other tool CWR parser it is intended for the end user, e.g. publishers who want to check their CWR before sending it to collecting societies or subpublishers. Developers however should have a look at the CWR parser.

How to Use

Following a brief introduction how the validator can be used, covering all essential functions.


To run the tool, you will need Windows and the zipped application. We are providing the latter, so download it, unzip it and run CwrValidator.exe

Loading a CWR

Afterwards you should see a screen similiar to the following (depending on the version you are using). After a brief but thorough examination of the disclaimer you should use the only visible button and LOAD a CWR-File.

Loading a CWR

Import Log

After a (hopefully) successful loading of a CWR-File you will see the Import Log, showing some stats (see below). In the unlikely event of an unsuccessful loading/reading of the CWR, the resulting errors are listed. These are _no_ validation results, only potential errors which might hinder validation.

Loading a CWR

Validation Results

The validation results tab lists all validation messages for the loaded CWR-File, including some metadata of the violated rule and number of occurrences.

You can collapse each validation message (click the small arrow on the right) and get a listing of the error causing works with line numbers and description.

Loading a CWR

CWR Data

In the tab CWR Data you can browse through the CWR-file and its validation messages.

According to the structure of a CWR File you can browse the Header, the Transaction List and a specific Transaction in the accordingly named tabs. Note that the transaction is displayed only once you've selected a specific transaction in the transaction list.

First, you get some metadata extracted from the filename (yes, in the CWR standard the filename has to follow a specific format and thus contains relevant information).

Below the Filename Information you'll find a structured visualisation of the Header fields of the CWR.

In case of validation messages the corresponding fields are marked with a Validation Message. MSG-Records are marked with a Validation Message.

Loading a CWR

Transaction List

The Transaction List tab shows all transactions (=musical works) included in the CWR-file along with some metadata, like Authors, number of validation messages etc. You can search for a specific transaction with the search box. If found what you are looking for, click on the right arrow and you will get to the details of the choosen transaction.

Transaction List

Transaction Details

In the Transaction Details tab you will find a list of validation results regarding that specific transaction and a structured view of the CWR-Data. Both elements can be collapsed (as shown in the gif below). You can either browse the CWR-Data yourself or jump directly to a specific record in from the validation results.

In the CWR-Data you'll see the CWR elements structured in rows. Below the raw CWR in the header of each element you get a list of all validation messages to this corresponding element and field-seperated view of the CWR-Data. In case a validation message is bound to a specific field, the field is highlighted.

As in the header, validation messages are marked with a Validation Message, whereas MSG-Records are marked with a Validation Message.

Browsing through the transactions


Since the validator strictly checks against the specification (regardless whether the rules are sensible) and not a few industry players define their own 'specifition', it might not be uncommon to be confronted with a magnitude of validation messages, mostly of one kind. If you or the sender/receiver of your CWR-files accepts or even produces a certain error, you can hide the corresponding rules to concentrate on the 'real' errors. This is done by filtering. You have two options: 1. Create a filter for the current file 2. Create a filter preset, which you can apply whenever necessary

Filtering the current file

To filter certain validation messages in the current file, just click the filter button in the top right corner. You'll then get a list of the validation messages of the current document (sorted descending by occurences), where you can choose which of them should be visible.

If you already have defined a preset, you can choose it in the dropdown on the top of the dialog.


Create filter presets

To provide a convenient way of reusing a configuration of filters, you can define presets. Just open the Configure Filter Presets dialog in the main menu. On the left you will find a list of available presets (italic the not editable factory presets, bold the currently selected preset). With the buttons above the filter list you can

  • create a new preset
  • clone a current preset (only available if one is selected)
  • create a preset from the current set of filters
  • or delete a preset (except for the factory presets).

If a preset is selected, you may edit it's metadata or add/remove validation messages to filter. To apply a preset, go to the filter dialog as described above.



In the Convert CWR tab it is possible to export the CWR-Data along with the validation results as a JSON-File to simplify integration of the data in other IT processes.


The current version is v0.5.8077 from 14.02.2022.

download (zip)


The tool is thoroughly tested. However, it is still in ALPHA state. Thus, use it at your own risk. We are not responsible for any negative outcome due to the use of this program. Feedback of any kind please send to Stephan Klingner.

Known Issues

  • Since we don't have (and probably ever won't) get access to a database of IPI-Numbers it is not possible to validate the IPI numbers, although specified in the spec
  • In case of 11-digit IPI numbers the spec rev. 8 allows for overwriting the sender type in the HDR-Record, which when applied, violating other rules. Therefore we decided to ignore 11-digit IPI numbers. In case you are lucky and have to deal with those, we recommend filtering resulting validation messages.
  • CWR-files with Agreement records are not tested yet, so you will probably have unpredicted behaviours of the application. If that should be the case, please send us the concerning files so we might figure out a solution.


v0.5.8077 - 14.02.2022

  • Showing ID in Validation Results Tab
  • Allowing selecting and copying of Work Title and Work ID in Validation Results Tab
  • New CISAC Sender Codes from 10.02.2022
  • Adding Update Available hint

v0.5.7873 - 02.08.2021

  • textual changes in disclaimer
  • increase robustness against errors when loading corrupted files
  • fixed a rare bug where the number of active validation messages was wrong

v0.5.7842 - 22.06.2021

  • fixed a few bugs regarding date handling

v0.5.77 - 19.03.2021

  • fixed a few validation bugs
  • added minor usability improvements

v0.5.74 - 17.06.2020

  • fixed a lot of bugs and inconsistencies
  • added the filter presets features