Duplicate the content and place it side by side, then translateX by exactly half the total width and jump back to 0 — the seam becomes invisible and it loops forever. Use linear easing, or the speed will visibly pulse.
Common for logo walls, news tickers, and "now playing" strips. Pausing on hover with animation-play-state: paused gives readers a moment to catch up.
When to use
Don't rely on a marquee for anything important — the user can't read at their own pace. Keep it for decoration (logo walls) or secondary info.