← All plugins
Live · v3.0.0 · Free

Orravo FX

GPU-first animation and interaction primitives for any WordPress site. Scroll-reveal, parallax, sticky-media scrollytelling, count-up, marquee, magnetic-cursor, tilt, image-compare, lazy Lottie, plus 13 more. Vanilla JS, around 8KB gzipped, IntersectionObserver and rAF-throttled, prefers-reduced-motion aware. Every module enables and disables individually from the admin.

~8KB gzip0 dependenciesVanilla JSWCAG 2.1 reduced-motion
0Built-in modules
0Engine bundle (gzip)
0External dependencies
$0Forever
~ orv-fx / engine.log
● live

Score a page.
See its motion budget.

This is a UI simulation of the Orravo FX page audit inside the WP admin. Type any page slug to see how many primitives load, whether reduced-motion is being honoured, the on-page bundle size, and the per-frame FPS impact.

Score a page.
Read the motion budget.

Simulated demo. Runs automatically as you scroll. The real plugin walks the DOM and reports against the engine instance.

Demo simulation
FX primitives loaded·awaiting scan
Reduced motion check·awaiting scan
Bundle size on this page·awaiting scan
FPS impact on scroll·awaiting scan

Everything motion,
nothing extra.

22 built-in modules across 7 packs. One vanilla-JS engine. IntersectionObserver, rAF, GPU transforms. Pauses when off-screen, falls back when reduced-motion is requested.

// 22 modules · 7 packs · ~8KB gzip · 0 dependencies
Scroll Reveal (fade + slide on viewport entry)
Reveal Blur (frosted-glass drop variant)
Parallax Layers (multi-speed in container)
Sticky Media (Apple-style scrollytelling)
Marquee (infinite scrolling strip)
Rich Marquee (edge-fade + auto-clone)
Count Up (numeric animation, suffixes preserved)
Magnetic Cursor (drift toward pointer)
Image Compare (before/after slider, keyboard-accessible)
Lazy Lottie (lazy lottie-web from CDN, on-scroll)
Tilt (3D card tilt on pointer)
Text Split (per-word or per-letter reveal)
SVG Line Draw (stroke-dasharray on scroll)
Cursor Trail (eased dot inside element)
Confetti Burst (DOM particles on click or scroll)
Kinetic Typography (viewport-position scaled)
Section Anchors (smooth-scroll with header offset)
Page Transitions (View Transitions API + fallback)
Focus Trail (traveling outline for keyboard focus)
Text Shimmer (background-clip highlight loop)
Particles Background (canvas field, pauses off-screen)
Hover Glow (cursor-following spotlight gradient)
Text Cycle (rotates child elements with fade)
7 packs: reveal, pointer, type, background, navigation, decoration, utility
Per-module enable / disable in the admin
Per-pack enable / disable in the admin
reduced_motion_override: auto / on / off
Loading strategy: monolithic or per-module
Conditional load (only pages that use it)
CSP-strict mode (no inline injection)
WP-CLI commands (orv-fx audit, orv-fx modules)
REST API for engine + module config

Click around.
It's all real.

Six interactive previews of the actual Orravo FX modules. No screenshots; these are working mock-ups of what ships in the plugin.

Scroll Reveal

Fades and slides children into view as the host enters the viewport. Optional data-orv-sr-stagger for sequential reveal. Falls back to a fade-only path under prefers-reduced-motion.

data-orv-fxscroll-reveal
120msDefault stagger
IOIntersectionObserver
0.6KBModule size
Configured attributesmodule
AttributeTypeDefaultNotes
data-orv-fxtriggerscroll-revealrequired
data-orv-sr-staggernumber0per-child delay multiplier
data-orv-sr-distancepx32slide distance
data-orv-sr-durationms700animation duration

Parallax Layers

Multi-speed layered parallax inside a container. Each child moves at its own data-orv-px-speed. rAF-throttled. Pauses when off-screen.

Layer speeds (vh per scroll)3 layers
Background imageimgdata-orv-px-speed="-30"
Mid layerimgdata-orv-px-speed="15"
Headlineh1data-orv-px-speed="35"
Sticky Media (sister module)scrollytelling
data-orv-stk-targetslotpinned media element
data-orv-stk-imgurlimage to swap on entry

Count Up

Numeric counters animate from zero on first viewport entry. Suffixes preserved. Currency-friendly.

98%Uptime
14,820Clicks tracked
$2.4MRevenue
1,200msDefault duration
Configured attributesmodule
AttributeTypeDefaultNotes
data-orv-cu-tostringrequiredfinal value, suffix preserved
data-orv-cu-durms1200animation duration
data-orv-cu-easingenumout-cubiclinear / out-cubic / out-expo

Marquee

Infinite scrolling text or logo strip. Pauses on hover and on focus. Speed controlled with the --orv-fx-mq-speed custom property.

Track 1: textA simple horizontal track of strings. Cloned automatically to fill the viewport.
Track 2: logosSame trigger, image children. Use rich-marquee for an edge-fade mask + auto-cloning behaviour.
Pauses on hoveranimation-play-state: paused on :hover and :focus-within. No JS required.
Reduced motionMarquee fully suppressed when prefers-reduced-motion is requested. Track stays static.

Magnetic Cursor + Tilt

Pointer-tracked behaviours for hover delight. Magnetic drifts the element toward the cursor; Tilt rotates it in 3D. Both no-op on touch.

Magnetic Cursordata-orv-mag
data-orv-magtriggeropt-in attribute
data-orv-mag-strengthnumber0 to 1, default 0.3
Tiltdata-orv-fx="tilt"
data-orv-tilt-maxdegmax rotation, default 12
data-orv-tilt-persppxperspective, default 800

Image Compare

Before/after slider with a keyboard-accessible drag handle. Arrow keys move the divider; Home/End jump to extremes.

orv-fx-icContainer class
DragPointer + keyboard
0.9KBModule size
WCAG 2.1AA-compliant
Required structuremarkup
.orv-fx-icrootdata-orv-fx="image-compare"
.orv-fx-ic__beforelayerbefore image wrapper
.orv-fx-ic__afterlayerafter image wrapper
.orv-fx-ic__handlehandledraggable divider
Open the live WordPress playgroundRead the developer docs

What you get
vs. what they sell you.

ScrollMagic, GSAP ScrollTrigger, AOS, and WOW.js cover slices of this surface area. Most ship behind a paid pro tier or require a large runtime. Orravo FX covers the same primitives in one open install.

ScrollMagicGSAP+ScrollTriggerAOS / WOW.jsOrravo FX
Vanilla JS, no jQuery, no frameworknononoBuilt in
Bundle size (gzipped)~8KB~85KB GSAP~14KB AOS~3KB WOW
Total runtime dependenciesGSAPGSAPnoneanimate.css
Scroll-reveal with staggerBuilt in
Multi-speed parallax layerspaid pluginnoBuilt in
Sticky-media scrollytellingpro tiernoBuilt in
Count-up numeric animationnononoBuilt in
Marquee + rich-marquee tracksnononoBuilt in
Magnetic cursor on hovernononoBuilt in
3D pointer-tracked tiltnononoBuilt in
Image compare sliderpaid pluginnonoBuilt in
Lazy Lottie loader (CDN, on scroll)nononoBuilt in
Text split per word or letterpro tiernoBuilt in
SVG line-draw on scrollpro tiernoBuilt in
Cursor trail + hover glownononoBuilt in
Confetti burst on click or scrollnononoBuilt in
Particles canvas backgroundnononoBuilt in
View Transitions API page fadenononoBuilt in
prefers-reduced-motion respectedpartialpartialBuilt in
IntersectionObserver, no scroll listenerspartialpartialBuilt in
rAF-throttled, GPU-friendly transformspartialBuilt in
Pauses when off-screen / tab hiddennonoBuilt in
Engine custom events for instrumentationnopartialnoBuilt in
Per-module enable / disable togglenononoBuilt in
Per-pack toggle (reveal, pointer, etc.)nononoBuilt in
CSP-strict mode (no inline scripts)nononoBuilt in
Conditional load (only pages that use it)nononoBuilt in
WP-CLI commands for module auditsnononoBuilt in
REST API for engine + module confignononoBuilt in
Pricing modelFree + paid pro$99 GreenSock bizFreeFree forever

Clean public API.
Read the source.

Every module is a single data attribute. The engine emits custom events you can hook for analytics, error reporting, or test instrumentation. Helper functions are exposed on window.OrvFX.

<!-- Scroll Reveal: fades and slides into view as the element enters the viewport. -->
<div data-orv-fx="scroll-reveal" data-orv-sr-stagger="2">
  <h2>Quietly amazing</h2>
  <p>Each child fades in 120ms after the previous one.</p>
  <a href="/cta">Read the case study</a>
</div>

<!-- Reveal Blur: same trigger, frosted-glass drop. Use sparingly. -->
<h1 data-orv-fx="reveal-blur">Hero appears from a blur</h1>

Free.
Forever.

Orravo FX is fully open and free. Every module, every pack, every admin toggle unlocked.

// free

Orravo FX.

All modules. Unlimited sites. No license key.
$0
free forever
  • Unlimited sites
  • 22 built-in modules across 7 packs
  • Per-module + per-pack admin toggles
  • WP-CLI commands + REST API for engine config
  • prefers-reduced-motion aware out of the box
Try it live ↗

Asked & answered.

What is Orravo FX, exactly? +
A vanilla-JS animation engine for WordPress. You drop a data attribute on a tag, the engine wires up the right behaviour. There are 22 built-in modules across reveal, pointer, type, background, navigation, decoration, and utility categories. The whole engine is around 8KB gzipped (lite build) or 14KB (full build). No jQuery, no React, no GSAP.
How do I actually use it on a page? +
Activate the plugin, then add data-orv-fx="<module>" to any element. For example: <div data-orv-fx="scroll-reveal">…</div> reveals as it enters the viewport. <h2 data-orv-fx="text-split" data-orv-ts-by="word">…</h2> wraps each word in a span and reveals them with a stagger. Each module ships with its own data-* attributes for tuning; the docs list every one.
Does it respect prefers-reduced-motion? +
Yes. The engine reads the OS-level setting on boot. When reduced-motion is requested, modules either skip animation entirely (parallax, marquee, particles) or fall back to a fade-only path (scroll-reveal, text-split). You can override per site in the admin: Settings → reduced_motion_override = "auto" | "force-on" | "force-off". WCAG 2.1 AAA compliant by default.
Is this another GSAP / ScrollMagic wrapper? +
No. It is a standalone engine. Every module is hand-written vanilla JS using IntersectionObserver, requestAnimationFrame, and CSS transforms. No GSAP, no anime.js, no third-party animation libraries. The only optional external dependency is lottie-web, and that is lazy-loaded from a CDN only when a [data-orv-fx="lottie"] element scrolls into view.
Can I disable modules I don't use? +
Yes. The admin Modules tab lists every registered module with a per-module toggle. Pack-level toggles (reveal pack, pointer pack, type pack, etc.) disable a whole category at once. Disabled modules are not even shipped in the engine bundle when conditional_load is on. Loading strategy can be set to "monolithic" (one engine.js) or per-module (each module is its own lazy chunk).
What happens on a CSP-strict site? +
Set csp_strict = true in Settings. The engine then refuses to inject inline styles or scripts; everything goes through the enqueued stylesheet and the engine bundle. Page Transitions module also degrades gracefully on CSP-strict pages where the View Transitions API would otherwise need a small inline shim.

Stop bolting GSAP onto every site.
Ship motion that already respects your visitors.

Get Orravo FX free