- Interaction
- Loop
- Category
- Development
- Duration
- 1.33 s
- Frame rate
- 30 fps
- Artboard
- 32 × 32 px
- Lottie size
- 1.7 kB
Terminal
Animated terminal icon
Use the Terminal icon for terminal and CLI sections on landing pages: it loops continuously and takes 1.33 s. Looping icons typically show loading spinners, active alerts, a ringing bell or a scroll-down hint.
Free under the MIT license · Markdown version · About the files
Use it
npm install react-useanimationsimport UseAnimations from 'react-useanimations';
import terminal from 'react-useanimations/lib/terminal';
<UseAnimations animation={terminal} size={32} />npx shadcn@latest add https://useanimations.com/r/terminal.jsonimport { AnimatedTerminal } from '@/components/animations/terminal';
<AnimatedTerminal size={24} /><div id="terminal-icon" style="width: 48px; height: 48px"></div>
<script src="https://cdn.jsdelivr.net/npm/lottie-web@5.13.0/build/player/lottie_light.min.js"></script>
<script>
const el = document.getElementById('terminal-icon');
const a = lottie.loadAnimation({ container: el, renderer: 'svg', loop: true, autoplay: false, path: 'https://useanimations.com/icons/terminal.json' });
const motion = matchMedia('(prefers-reduced-motion: reduce)');
a.addEventListener('DOMLoaded', () => { a.goToAndStop(0, true); if (!motion.matches) a.play(); });
motion.addEventListener('change', (event) => { if (event.matches) a.goToAndStop(0, true); else a.play(); });
</script>Terminal runs on the light build, lottie_light.min.js.
import LottieView from 'lottie-react-native';
<LottieView source={{ uri: 'https://useanimations.com/icons/terminal.json' }} autoPlay loop style={{ width: 48, height: 48 }} />import Lottie
LottieView {
await LottieAnimation.loadedFrom(url: URL(string: "https://useanimations.com/icons/terminal.json")!)
}
.playing(loopMode: .loop)
.frame(width: 48, height: 48)val composition by rememberLottieComposition(LottieCompositionSpec.Url("https://useanimations.com/icons/terminal.json"))
LottieAnimation(composition, iterations = LottieConstants.IterateForever, modifier = Modifier.size(48.dp))import 'package:lottie/lottie.dart';
Lottie.network('https://useanimations.com/icons/terminal.json', width: 48, height: 48, repeat: true)Bundle terminal.json with the app to use it offline.
<img src="https://useanimations.com/icons/terminal/terminal.svg" alt="Terminal" width="24" height="24" />Inside <img> the SVG draws black; inline it to follow the text color.
Static SVG
Questions about the Terminal icon
›Can I pause the Terminal loop?
It pauses by itself while scrolled out of view and stays on its first frame when reduced motion is preferred or autoplay={false} is set. To show it only while something is pending, render it conditionally.
›Is Terminal decorative?
By default it is aria-hidden. Pass aria-label="Terminal" to announce it as an image, or leave it hidden when the link or button it sits in has its own text.
›Can Terminal loop only while hovered instead?
Yes: pass interaction="hover-loop". It then loops while hovered, finishes the current cycle after mouseleave and stays static when reduced motion is preferred.