diff --git a/CHANGELOG.md b/CHANGELOG.md
index 804ca02d..d4218b17 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
 ## [unreleased]
+### Added
+- added option to set custom key replacements [#547](https://github.com/matchms/matchms/pull/547)
 ### Fixed
 - handle missing `precursor_mz` in representation and [#452](https://github.com/matchms/matchms/issues/452) introduced by [#514](https://github.com/matchms/matchms/pull/514/files)[#540](https://github.com/matchms/matchms/pull/540)
 
diff --git a/matchms/Metadata.py b/matchms/Metadata.py
index 3ddb0845..190d90e6 100644
--- a/matchms/Metadata.py
+++ b/matchms/Metadata.py
@@ -11,11 +11,6 @@ from .filtering.metadata_processing.make_charge_int import \
 from .utils import load_export_key_conversions, load_known_key_conversions
 
 
-_key_regex_replacements = {r"\s": "_",
-                           r"[!?.,;:]": ""}
-_key_replacements = load_known_key_conversions()
-
-
 class Metadata:
     """Class to handle spectrum metadata in matchms.
 
@@ -46,6 +41,11 @@ class Metadata:
         print(metadata["compound_name"])  # => None (now you need to use "compound name")
 
     """
+
+    _key_regex_replacements = {r"\s": "_",
+                           r"[!?.,;:]": ""}
+    _key_replacements = load_known_key_conversions()
+
     def __init__(self, metadata: dict = None,
                  matchms_key_style: bool = True):
         """
@@ -90,8 +90,8 @@ class Metadata:
         replacements (such as precursor_mass --> precursor_mz).
 
         """
-        self._data.key_regex_replacements = _key_regex_replacements
-        self._data.key_replacements = _key_replacements
+        self._data.key_regex_replacements = Metadata._key_regex_replacements
+        self._data.key_replacements = Metadata._key_replacements
 
     def harmonize_values(self):
         """Runs default harmonization of metadata.
@@ -195,3 +195,14 @@ class Metadata:
                 self.harmonize_keys()
         else:
             raise TypeError("Expected input of type dict or PickyDict.")
+    
+    @staticmethod
+    def set_key_replacements(keys: dict):
+        """Set key replacements for metadata harmonization.
+
+        Parameters
+        ----------
+        keys:
+            Dictionary with key replacements.
+        """
+        Metadata._key_replacements = keys
\ No newline at end of file

diff --git a/tests/test_metadata.py b/tests/test_metadata.py
index 99430668..ff540edd 100644
--- a/tests/test_metadata.py
+++ b/tests/test_metadata.py
@@ -3,6 +3,7 @@ import numpy as np
 import pytest
 from pickydict import PickyDict
 from matchms import Metadata
+from matchms.utils import load_known_key_conversions
 
 
 @pytest.mark.parametrize("input_dict, harmonize, expected", [
@@ -106,3 +107,20 @@ def test_remove_invalid_metadata(input_dict, expected):
     metadata.harmonize_values()
 
     assert metadata == expected, "Expected metadata to be equal."
+
+
+@pytest.mark.parametrize("mapping, metadata", [
+    [{"name": "compound_name"}, {"name": "test"}],
+    [{}, {"name": "test"}],
+])
+def test_metadata_key_mapping(mapping: dict, metadata: dict):
+    Metadata.set_key_replacements(mapping)
+
+    sut = Metadata(metadata)
+    if len(mapping) > 0:
+        assert sut[next(iter(mapping.values()))] == next(iter(metadata.values()))
+        assert sut[next(iter(mapping))] is None
+    else:
+        assert sut[next(iter(metadata))] == next(iter(metadata.values()))
+        
+    Metadata.set_key_replacements(load_known_key_conversions())
\ No newline at end of file

Enable setting key conversion with static method
Currently it is impossible to avoid the key conversion. It should be possible to set them to a user defined value with a static method.

tests/test_metadata.py::test_metadata_key_mapping[mapping0-metadata0] tests/test_metadata.py::test_metadata_key_mapping[mapping1-metadata1]
tests/test_metadata.py::test_metadata_init[None-True-expected0] tests/test_metadata.py::test_metadata_init[input_dict1-True-expected1] tests/test_metadata.py::test_metadata_init[input_dict2-True-expected2] tests/test_metadata.py::test_metadata_init[input_dict3-False-expected3] tests/test_metadata.py::test_metadata_init[input_dict4-True-expected4] tests/test_metadata.py::test_metadata_init[input_dict5-True-expected5] tests/test_metadata.py::test_metadata_init[input_dict6-True-expected6] tests/test_metadata.py::test_metadata_setter[True-precursor_mz-101.01-expected0] tests/test_metadata.py::test_metadata_setter[True-precursormz-101.01-expected1] tests/test_metadata.py::test_metadata_setter[False-precursormz-101.01-expected2] tests/test_metadata.py::test_metadata_setter[True-ionmode-NEGATIVE-expected3] tests/test_metadata.py::test_metadata_setter_getter[True-precursor_mz-101.01-precursor_mz-101.01] tests/test_metadata.py::test_metadata_setter_getter[True-precursormz-101.01-precursor_mz-101.01] tests/test_metadata.py::test_metadata_setter_getter[False-precursormz-101.01-precursormz-101.01] tests/test_metadata.py::test_metadata_setter_getter[True-ionmode-NEGATIVE-ionmode-NEGATIVE] tests/test_metadata.py::test_metadata_setitem_getitem[True-precursor_mz-101.01-precursor_mz-101.01] tests/test_metadata.py::test_metadata_setitem_getitem[True-precursormz-101.01-precursor_mz-101.01] tests/test_metadata.py::test_metadata_setitem_getitem[False-precursormz-101.01-precursormz-101.01] tests/test_metadata.py::test_metadata_setitem_getitem[True-ionmode-NEGATIVE-ionmode-NEGATIVE] tests/test_metadata.py::test_metadata_to_dict[None-matchms-expected0] tests/test_metadata.py::test_metadata_to_dict[input_dict1-matchms-expected1] tests/test_metadata.py::test_metadata_to_dict[input_dict2-massbank-expected2] tests/test_metadata.py::test_metadata_to_dict[input_dict3-massbank-expected3] tests/test_metadata.py::test_metadata_to_dict[input_dict4-nist-expected4] tests/test_metadata.py::test_metadata_to_dict[input_dict5-riken-expected5] tests/test_metadata.py::test_metadata_to_dict[input_dict6-gnps-expected6] tests/test_metadata.py::test_metadata_equal[dict10-dict20-True] tests/test_metadata.py::test_metadata_equal[dict11-dict21-False] tests/test_metadata.py::test_metadata_equal[dict12-dict22-True] tests/test_metadata.py::test_metadata_equal[dict13-dict23-False] tests/test_metadata.py::test_metadata_equal[dict14-dict24-True] tests/test_metadata.py::test_metadata_equal[dict15-dict25-False] tests/test_metadata.py::test_metadata_full_setter tests/test_metadata.py::test_remove_invalid_metadata[input_dict0-expected0]