diff --git a/src/output/Timer.cxx b/src/output/Timer.cxx
index 4d31074ef..c2c25e235 100644
--- a/src/output/Timer.cxx
+++ b/src/output/Timer.cxx
@@ -22,24 +22,26 @@
 
 #include <cassert>
 
-Timer::Timer(const AudioFormat af)
+Timer::Timer(const AudioFormat af) noexcept
 	:rate(af.sample_rate * af.GetFrameSize())
 {
 }
 
-void Timer::Start()
+void
+Timer::Start() noexcept
 {
 	time = Now();
 	started = true;
 }
 
-void Timer::Reset()
+void
+Timer::Reset() noexcept
 {
 	started = false;
 }
 
 void
-Timer::Add(size_t size)
+Timer::Add(size_t size) noexcept
 {
 	assert(started);
 
@@ -49,7 +51,7 @@ Timer::Add(size_t size)
 }
 
 std::chrono::steady_clock::duration
-Timer::GetDelay() const
+Timer::GetDelay() const noexcept
 {
 	assert(started);
 
diff --git a/src/output/Timer.hxx b/src/output/Timer.hxx
index 735edd04b..0ceef1354 100644
--- a/src/output/Timer.hxx
+++ b/src/output/Timer.hxx
@@ -31,22 +31,24 @@ class Timer {
 	bool started = false;
 	const int rate;
 public:
-	explicit Timer(AudioFormat af);
+	explicit Timer(AudioFormat af) noexcept;
 
-	bool IsStarted() const { return started; }
+	bool IsStarted() const noexcept { return started; }
 
-	void Start();
-	void Reset();
+	void Start() noexcept;
+	void Reset() noexcept;
 
-	void Add(size_t size);
+	void Add(size_t size) noexcept;
 
 	/**
 	 * Returns the duration to sleep to get back to sync.
 	 */
-	std::chrono::steady_clock::duration GetDelay() const;
+	[[gnu::pure]]
+	std::chrono::steady_clock::duration GetDelay() const noexcept;
 
 private:
-	static Time Now() {
+	[[gnu::pure]]
+	static Time Now() noexcept {
 		return std::chrono::duration_cast<Time>(std::chrono::steady_clock::now().time_since_epoch());
 	}
 };