diff --git a/src/sugar.py b/src/sugar.py
index b5cecfa8d3802e2a92d54972300cee1a3891f03f..7a95a07ee42458a559f541312fc20d31551af9f4 100644
--- a/src/sugar.py
+++ b/src/sugar.py
@@ -38,6 +38,7 @@ from .plot import Plot
 __all__ = ['PS_field', 'power_analyze', 'create_power_operator',
            'create_harmonic_smoothing_operator', 'from_random',
            'full', 'makeField',
+           'is_fieldlike', 'is_linearization', 'is_operator',
            'makeDomain', 'get_signal_variance', 'makeOp', 'domain_union',
            'get_default_codomain', 'single_plot', 'exec_time',
            'calculate_position'] + list(pointwise.ptw_dict.keys())
@@ -526,3 +527,33 @@ def calculate_position(operator, output):
         kl, _ = minimizer(kl)
         pos = kl.position
     return pos
+
+
+def is_operator(obj):
+    """Checks if object is operator-like.
+
+    Note
+    ----
+    A simple `isinstance(obj, ift.Operator)` does give the expected
+    result because, e.g., :class:`~nifty7.field.Field` inherits from
+    :class:`~nifty7.operators.operator.Operator`.
+    """
+    return isinstance(obj, Operator) and obj.val is None and obj.jac is None
+
+
+def is_linearization(obj):
+    """Checks if object is linearization-like."""
+    return isinstance(obj, Operator) and obj.val is not None and obj.jac is not None
+
+
+def is_fieldlike(obj):
+    """Checks if object is field-like.
+
+    Note
+    ----
+    A simple `isinstance(obj, ift.Field)` does give the expected
+    result because users might have implemented another class which
+    behaves field-like but is not an instance of
+    :class:`~nifty7.field.Field`.
+    """
+    return isinstance(obj, Operator) and obj.val is not None and obj.jac is None
diff --git a/test/test_sugar.py b/test/test_sugar.py
index 61b59a47e2cca99b0cf3abd80461bdc278a24276..90d5294614a6dd8e8c44a5579a45cf61f4ab3a00 100644
--- a/test/test_sugar.py
+++ b/test/test_sugar.py
@@ -69,3 +69,19 @@ def test_calc_pos(mf, cplx):
     fld = op(0.1 * ift.from_random(op.domain, 'normal'))
     pos = ift.calculate_position(op, fld)
     ift.extra.assert_allclose(op(pos), fld, 1e-1, 1e-1)
+
+
+def test_isinstance_helpers():
+    dom = ift.RGSpace(12, harmonic=True)
+    op = ift.ScalingOperator(dom, 12.)
+    fld = ift.full(dom, 0.)
+    lin = ift.Linearization.make_var(fld)
+    assert not ift.is_fieldlike(op)
+    assert not ift.is_fieldlike(lin)
+    assert ift.is_fieldlike(fld)
+    assert not ift.is_linearization(op)
+    assert ift.is_linearization(lin)
+    assert not ift.is_linearization(fld)
+    assert ift.is_operator(op)
+    assert not ift.is_operator(lin)
+    assert not ift.is_operator(fld)