diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index c524071..71b1598 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog
 =========
 
+* Add support for ``datetime.timedelta`` to ``time_machine.travel()``.
+
+  Thanks to Nate Dudenhoeffer in `PR #298 <https://github.com/adamchainz/time-machine/pull/298>`__.
+
 * Add ``shift()`` method to the ``time_machine`` pytest fixture.
 
   Thanks to Stefaan Lippens in `PR #312 <https://github.com/adamchainz/time-machine/pull/312>`__.
diff --git a/README.rst b/README.rst
index 755325c..88db11f 100644
--- a/README.rst
+++ b/README.rst
@@ -77,6 +77,9 @@ It may be:
   If it has ``tzinfo`` set to a |zoneinfo-instance|_, the current timezone will also be mocked.
 * A ``datetime.date``.
   This will be converted to a UTC datetime with the time 00:00:00.
+* A ``datetime.timedelta``.
+  This will be interpreted relative to the current time.
+  If already within a ``travel()`` block, the ``shift()`` method is easier to use (documented below).
 * A ``float`` or ``int`` specifying a `Unix timestamp <https://en.m.wikipedia.org/wiki/Unix_time>`__
 * A string, which will be parsed with `dateutil.parse <https://dateutil.readthedocs.io/en/stable/parser.html>`__ and converted to a timestamp.
   Again, if the result is naive, it will be assumed to have the UTC time zone.
diff --git a/src/time_machine/__init__.py b/src/time_machine/__init__.py
index c0d6bda..4fa2142 100644
--- a/src/time_machine/__init__.py
+++ b/src/time_machine/__init__.py
@@ -84,6 +84,7 @@ DestinationBaseType = Union[
     int,
     float,
     dt.datetime,
+    dt.timedelta,
     dt.date,
     str,
 ]
@@ -124,6 +125,8 @@ def extract_timestamp_tzname(
         if dest.tzinfo is None:
             dest = dest.replace(tzinfo=dt.timezone.utc)
         timestamp = dest.timestamp()
+    elif isinstance(dest, dt.timedelta):
+        timestamp = time() + dest.total_seconds()
     elif isinstance(dest, dt.date):
         timestamp = dt.datetime.combine(
             dest, dt.time(0, 0), tzinfo=dt.timezone.utc

diff --git a/tests/test_time_machine.py b/tests/test_time_machine.py
index 9736be4..0f086bf 100644
--- a/tests/test_time_machine.py
+++ b/tests/test_time_machine.py
@@ -444,6 +444,24 @@ def test_destination_date():
     assert time.time() == EPOCH
 
 
+def test_destination_timedelta():
+    now = time.time()
+    with time_machine.travel(dt.timedelta(seconds=3600)):
+        assert now + 3600 <= time.time() <= now + 3601
+
+
+def test_destination_timedelta_negative():
+    now = time.time()
+    with time_machine.travel(dt.timedelta(seconds=-3600)):
+        assert now - 3600 <= time.time() <= now - 3599
+
+
+def test_destination_timedelta_nested():
+    with time_machine.travel(EPOCH):
+        with time_machine.travel(dt.timedelta(seconds=10)):
+            assert time.time() == EPOCH + 10.0
+
+
 @time_machine.travel("1970-01-01 00:01 +0000")
 def test_destination_string():
     assert time.time() == EPOCH + 60.0

Allow passing dt.timedelta objects to travel()
It would offset the current time by the given amount, which would be pretty useful for some tests that check "X is true until N minutes in the future"
tests/test_time_machine.py::test_destination_timedelta tests/test_time_machine.py::test_destination_timedelta_negative tests/test_time_machine.py::test_destination_timedelta_nested
tests/test_time_machine.py::test_import_without_clock_realtime tests/test_time_machine.py::test_datetime_now_no_args tests/test_time_machine.py::test_datetime_now_no_args_no_tick tests/test_time_machine.py::test_datetime_now_arg tests/test_time_machine.py::test_datetime_utcnow tests/test_time_machine.py::test_datetime_utcnow_no_tick tests/test_time_machine.py::test_date_today tests/test_time_machine.py::test_time_clock_gettime_realtime tests/test_time_machine.py::test_time_clock_gettime_monotonic_unaffected tests/test_time_machine.py::test_time_clock_gettime_ns_realtime tests/test_time_machine.py::test_time_clock_gettime_ns_monotonic_unaffected tests/test_time_machine.py::test_time_gmtime_no_args tests/test_time_machine.py::test_time_gmtime_no_args_no_tick tests/test_time_machine.py::test_time_gmtime_arg tests/test_time_machine.py::test_time_localtime tests/test_time_machine.py::test_time_localtime_no_tick tests/test_time_machine.py::test_time_localtime_arg tests/test_time_machine.py::test_time_montonic tests/test_time_machine.py::test_time_monotonic_ns tests/test_time_machine.py::test_time_strftime_format tests/test_time_machine.py::test_time_strftime_format_no_tick tests/test_time_machine.py::test_time_strftime_format_t tests/test_time_machine.py::test_time_time tests/test_time_machine.py::test_time_time_windows tests/test_time_machine.py::test_time_time_no_tick tests/test_time_machine.py::test_time_time_ns tests/test_time_machine.py::test_time_time_ns_no_tick tests/test_time_machine.py::test_nestable tests/test_time_machine.py::test_unsupported_type tests/test_time_machine.py::test_exceptions_dont_break_it tests/test_time_machine.py::test_destination_datetime tests/test_time_machine.py::test_destination_datetime_tzinfo_non_zoneinfo tests/test_time_machine.py::test_destination_datetime_tzinfo_zoneinfo tests/test_time_machine.py::test_destination_datetime_tzinfo_zoneinfo_nested tests/test_time_machine.py::test_destination_datetime_tzinfo_zoneinfo_no_orig_tz tests/test_time_machine.py::test_destination_datetime_tzinfo_zoneinfo_windows tests/test_time_machine.py::test_destination_int tests/test_time_machine.py::test_destination_datetime_naive tests/test_time_machine.py::test_destination_date tests/test_time_machine.py::test_destination_string tests/test_time_machine.py::test_destination_callable_lambda_float tests/test_time_machine.py::test_destination_callable_lambda_string tests/test_time_machine.py::test_destination_generator tests/test_time_machine.py::test_traveller_object tests/test_time_machine.py::test_function_decorator tests/test_time_machine.py::test_coroutine_decorator tests/test_time_machine.py::test_class_decorator_fails_non_testcase tests/test_time_machine.py::TestMethodDecorator::test_method_decorator tests/test_time_machine.py::UnitTestMethodTests::test_method_decorator tests/test_time_machine.py::UnitTestClassTests::test_class_decorator tests/test_time_machine.py::UnitTestClassTests::test_stacked_method_decorator tests/test_time_machine.py::UnitTestClassCustomSetUpClassTests::test_class_decorator tests/test_time_machine.py::test_shift_with_timedelta tests/test_time_machine.py::test_shift_integer_delta tests/test_time_machine.py::test_shift_negative_delta tests/test_time_machine.py::test_shift_wrong_delta tests/test_time_machine.py::test_shift_when_tick tests/test_time_machine.py::test_move_to_datetime tests/test_time_machine.py::test_move_to_datetime_no_tick tests/test_time_machine.py::test_move_to_past_datetime tests/test_time_machine.py::test_move_to_datetime_with_tzinfo_zoneinfo tests/test_time_machine.py::test_move_to_datetime_change_tick_on tests/test_time_machine.py::test_move_to_datetime_change_tick_off tests/test_time_machine.py::test_uuid1 tests/test_time_machine.py::test_fixture_unused tests/test_time_machine.py::test_fixture_used tests/test_time_machine.py::test_fixture_used_tick_false tests/test_time_machine.py::test_fixture_used_tick_true tests/test_time_machine.py::test_fixture_move_to_twice tests/test_time_machine.py::test_fixture_move_to_and_shift tests/test_time_machine.py::test_fixture_shift_without_move_to tests/test_time_machine.py::TestEscapeHatch::test_is_travelling_false tests/test_time_machine.py::TestEscapeHatch::test_is_travelling_true tests/test_time_machine.py::TestEscapeHatch::test_datetime_now tests/test_time_machine.py::TestEscapeHatch::test_datetime_now_tz tests/test_time_machine.py::TestEscapeHatch::test_datetime_utcnow tests/test_time_machine.py::TestEscapeHatch::test_time_clock_gettime tests/test_time_machine.py::TestEscapeHatch::test_time_clock_gettime_ns tests/test_time_machine.py::TestEscapeHatch::test_time_gmtime tests/test_time_machine.py::TestEscapeHatch::test_time_localtime tests/test_time_machine.py::TestEscapeHatch::test_time_monotonic tests/test_time_machine.py::TestEscapeHatch::test_time_monotonic_ns tests/test_time_machine.py::TestEscapeHatch::test_time_strftime_no_arg tests/test_time_machine.py::TestEscapeHatch::test_time_strftime_arg tests/test_time_machine.py::TestEscapeHatch::test_time_time tests/test_time_machine.py::TestEscapeHatch::test_time_time_ns