diff --git a/crates/directory/CHANGELOG.md b/crates/directory/CHANGELOG.md
index 0b3d4db..4265f15 100644
--- a/crates/directory/CHANGELOG.md
+++ b/crates/directory/CHANGELOG.md
@@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
+- Its checks of YouTube channels go one at a time, two seconds apart, since YouTube refuses many asked together (#386).
- Its JSON log lines no longer carry their span, once on its own and again in a list, which said nothing the line's own fields did not (#363).
### Fixed
diff --git a/crates/feed/src/fetch.rs b/crates/feed/src/fetch.rs
index 1fc534b..3d0a81e 100644
--- a/crates/feed/src/fetch.rs
+++ b/crates/feed/src/fetch.rs
@@ -41,9 +41,26 @@ pub static FETCHED_BYTES: AtomicU64 = AtomicU64::new(0);
/// catalogue was 62 MB, and 50 MB here stopped it updating (#357).
pub(crate) const MAX_BODY: usize = 200 << 20;
-/// How many times a YouTube feed's spurious failure is asked again, and how long between.
+/// How many times a YouTube feed's spurious failure is asked again, each after its turn.
const YOUTUBE_RETRIES: u32 = 2;
-const YOUTUBE_RETRY_AFTER: Duration = Duration::from_secs(1);
+
+/// The least time between two requests for YouTube feeds from this process. A scan asked for six
+/// at once, and channels in a row failed together while one asked alone a minute later read
+/// (#386); asked again a second later, they failed again.
+const YOUTUBE_GAP: Duration = Duration::from_secs(2);
+static YOUTUBE_NEXT: tokio::sync::Mutex