$dcmtk: dcmodify v3.7.1 2026-10-15 $
dcmodify: Modify DICOM files
usage: dcmodify [options] dcmfile-in...
parameters:
dcmfile-in DICOM input filename to be modified
("-" for stdin/stdout)
general options:
-h --help print this help text and exit
--version print version information and exit
--arguments print expanded command line arguments
-q --quiet quiet mode, print no warnings and errors
-v --verbose verbose mode, print processing details
-d --debug debug mode, print debug information
-ll --log-level [l]evel: string constant
(fatal, error, warn, info, debug, trace)
use level l for the logger
-lc --log-config [f]ilename: string
use config file f for the logger
input options:
input file format:
+f --read-file read file format or data set (default)
+fo --read-file-only read file format only
-f --read-dataset read data set without file meta information
+fc --create-file create file format if file does not exist
input transfer syntax:
-t= --read-xfer-auto use TS recognition (default)
-td --read-xfer-detect ignore TS specified in the file meta header
-te --read-xfer-little read with explicit VR little endian TS
-tb --read-xfer-big read with explicit VR big endian TS
-ti --read-xfer-implicit read with implicit VR little endian TS
parsing of odd-length attributes:
+ao --accept-odd-length accept odd length attributes (default)
+ae --assume-even-length assume real length is one byte larger
automatic data correction:
+dc --enable-correction enable automatic data correction (default)
-dc --disable-correction disable automatic data correction
bitstream format of deflated input:
+bd --bitstream-deflated expect deflated bitstream (default)
+bz --bitstream-zlib expect deflated zlib bitstream
processing options:
backup input files:
--backup backup files before modifying (default)
-nb --no-backup don't backup files (DANGEROUS)
insert mode:
-i --insert "[t]ag-path=[v]alue"
insert (or overwrite) path at position t
with value v
-if --insert-from-file "[t]ag-path=[f]ilename"
insert (or overwrite) path at position t
with value from file f
-nrc --no-reserv-check do not check private reservations
when inserting private tags
modify mode:
-m --modify "[t]ag-path=[v]alue"
modify tag at position t to value v
-mf --modify-from-file "[t]ag-path=[f]ilename"
modify tag at position t to value from file f
-ma --modify-all "[t]ag=[v]alue"
modify ALL matching tags t in file to value v
erase mode:
-e --erase "[t]ag-path"
erase tag/item at position t
-ea --erase-all "[t]ag"
erase ALL matching tags t in file
-ep --erase-private erase ALL private data from file
unique identifier:
-gst --gen-stud-uid generate new Study Instance UID
-gse --gen-ser-uid generate new Series Instance UID
-gin --gen-inst-uid generate new SOP Instance UID
-nmu --no-meta-uid do not update metaheader UIDs if related
UIDs in the dataset are modified
conditional execution:
-iff --process-if "[c]ondition"
only perform modification(s)
if condition c holds true
error handling:
-ie --ignore-errors continue with file, if modify error occurs
-imt --ignore-missing-tags treat 'tag not found' as success
when modifying or erasing in datasets
-iun --ignore-un-values do not try writing any values to elements
having a VR of UN
output options:
output file format:
+F --write-file write file format (default)
-F --write-dataset write data set without file meta information
output transfer syntax:
+t= --write-xfer-same write with same TS as input (default)
+te --write-xfer-little write with explicit VR little endian TS
+tb --write-xfer-big write with explicit VR big endian TS
+ti --write-xfer-implicit write with implicit VR little endian TS
post-1993 value representations:
+u --enable-new-vr enable support for new VRs (UN/UT) (default)
-u --disable-new-vr disable support for new VRs, convert to OB
group length encoding:
+g= --group-length-recalc recalculate group lengths if present (default)
+g --group-length-create always write with group length elements
-g --group-length-remove always write without group length elements
length encoding in sequences and items:
+le --length-explicit write with explicit lengths (default)
-le --length-undefined write with undefined lengths
data set trailing padding (not with --write-dataset):
-p= --padding-retain do not change padding
(default if not --write-dataset)
-p --padding-off no padding (implicit if --write-dataset)
+p --padding-create [f]ile-pad [i]tem-pad: integer
align file on multiple of f bytes
and items on multiple of i bytes
Options (39)
| Option | Description | Source |
|---|---|---|
-h | --help print this help text and exit | help |
--version | print version information and exit | help |
--arguments | print expanded command line arguments | help |
-q | --quiet quiet mode, print no warnings and errors | help |
-v | --verbose verbose mode, print processing details | help |
-d | --debug debug mode, print debug information | help |
-ll | --log-level [l]evel: string constant (fatal, error, warn, info, debug, trace) use level l for the logger | help |
-lc | --log-config [f]ilename: string use config file f for the logger | help |
-f | --read-dataset read data set without file meta information | help |
-t | --read-xfer-auto use TS recognition (default) | help |
-td | --read-xfer-detect ignore TS specified in the file meta header | help |
-te | --read-xfer-little read with explicit VR little endian TS | help |
-tb | --read-xfer-big read with explicit VR big endian TS | help |
-ti | --read-xfer-implicit read with implicit VR little endian TS | help |
-dc | --disable-correction disable automatic data correction | help |
--backup | backup files before modifying (default) | help |
-nb | --no-backup don't backup files (DANGEROUS) | help |
-i | --insert "[t]ag-path=[v]alue" insert (or overwrite) path at position t with value v | help |
-if | --insert-from-file "[t]ag-path=[f]ilename" insert (or overwrite) path at position t with value from file f | help |
-nrc | --no-reserv-check do not check private reservations when inserting private tags | help |
-m | --modify "[t]ag-path=[v]alue" modify tag at position t to value v | help |
-mf | --modify-from-file "[t]ag-path=[f]ilename" modify tag at position t to value from file f | help |
-ma | --modify-all "[t]ag=[v]alue" modify ALL matching tags t in file to value v | help |
-e | --erase "[t]ag-path" erase tag/item at position t | help |
-ea | --erase-all "[t]ag" erase ALL matching tags t in file | help |
-ep | --erase-private erase ALL private data from file | help |
-gst | --gen-stud-uid generate new Study Instance UID | help |
-gse | --gen-ser-uid generate new Series Instance UID | help |
-gin | --gen-inst-uid generate new SOP Instance UID | help |
-nmu | --no-meta-uid do not update metaheader UIDs if related UIDs in the dataset are modified | help |
-iff | --process-if "[c]ondition" only perform modification(s) if condition c holds true | help |
-ie | --ignore-errors continue with file, if modify error occurs | help |
-imt | --ignore-missing-tags treat 'tag not found' as success when modifying or erasing in datasets | help |
-iun | --ignore-un-values do not try writing any values to elements having a VR of UN | help |
-F | --write-dataset write data set without file meta information | help |
-u | --disable-new-vr disable support for new VRs, convert to OB | help |
-g | --group-length-remove always write without group length elements | help |
-le | --length-undefined write with undefined lengths | help |
-p | --padding-retain do not change padding (default if not --write-dataset) | help |
Examples (1) from the manual page, untested
-i --insert: