jQuery jQuery.fx.interval Property

Beginner
⏱️ 8 min read
📚 Updated: Jul 2026
🎯 5 Examples
🚀 5 Try-it labs
Global Config

What You’ll Learn

The jQuery.fx.interval static property controls how many milliseconds pass between jQuery animation update ticks on legacy browsers. This tutorial covers the default value of 13 ms, deprecation in jQuery 3.0 and removal in 4.0, why it has no effect when requestAnimationFrame is supported, the rule that all animations must stop before changing the global interval, comparisons with requestAnimationFrame, jQuery.fx.off, and CSS transitions, and five hands-on examples from reading the default to modern best practices.

01

Tick rate

Ms between updates

02

Default 13

Legacy timer default

03

Deprecated

3.0 warn, 4.0 gone

04

rAF wins

No effect when supported

05

Stop first

Idle before changing

06

Global only

One interval for all

Introduction

When you call .animate(), .fadeIn(), or similar effect methods, jQuery does not update CSS on every pixel instantly. Instead, it runs a loop that advances each tween a little on every tick. On modern browsers that loop is driven by requestAnimationFrame, synced to the display refresh rate. On older browsers without rAF, jQuery falls back to a single shared timer whose frequency is controlled by jQuery.fx.interval.

Added in jQuery 1.4.3, this global property let developers tune animation smoothness versus CPU cost. The default of 13 milliseconds means roughly 77 ticks per second on the timer fallback path. Understanding fx.interval matters mainly for maintaining legacy jQuery codebases and for knowing why tweaking it rarely changes behavior in browsers shipped today.

Understanding the jQuery.fx.interval Property

Per the official jQuery API, jQuery.fx.interval is the rate in milliseconds at which animations fire. It is a static property on the global jQuery.fx object — not a method you call on a jQuery collection like $(selector).animate().

Read it to inspect the current tick interval; assign a number to change it. Because jQuery maintains one global animation timer, the new value applies to every subsequent animation that uses the timer fallback. Animations already running continue on the old interval until they finish or you stop them with .stop() or .finish().

💡
Beginner Tip

Think of jQuery.fx.interval as the metronome speed for jQuery’s internal animation clock on legacy browsers. Faster ticks (lower number) mean smoother but busier updates; slower ticks (higher number) mean choppier motion with less timer overhead. On browsers with requestAnimationFrame, the browser’s own frame loop replaces this metronome entirely.

📝 Syntax

One global numeric property on jQuery.fx:

jQuery
// Read the current interval (default 13) - since jQuery 1.4.3
jQuery.fx.interval

// Write a new interval in milliseconds (stop all animations first)
jQuery.fx.interval = 50

Type and default

  • Type: Number — milliseconds between animation ticks on the timer fallback path.
  • Default: 13 — roughly 77 updates per second when the timer drives animations.
  • Scope: Global — one value shared by every jQuery animation on the page.

Version notes

  • Added: jQuery 1.4.3
  • Deprecated: jQuery 3.0 — no effect when requestAnimationFrame is supported.
  • Removed: jQuery 4.0 — property no longer exists; use rAF-native animation approaches instead.

Official jQuery API description

jQuery
// Stop every animation, then raise the global tick interval:
$( ":animated" ).stop( true, true );
jQuery.fx.interval = 50;
$( "#box" ).animate({ left: 300 }, 2000 );

// Reset to default when done (still requires no running animations):
$( ":animated" ).stop( true, true );
jQuery.fx.interval = 13;

⚡ Quick Reference

GoalCode
Read default intervaljQuery.fx.interval13
Slow down timer ticksjQuery.fx.interval = 50
Restore defaultjQuery.fx.interval = 13
Stop all before changing$( ":animated" ).stop( true, true )
Disable all effects globallyjQuery.fx.off = true
Modern smooth animationCSS transition or requestAnimationFrame

📋 jQuery.fx.interval vs requestAnimationFrame vs jQuery.fx.off vs CSS transitions

Four ways to think about animation timing — only fx.interval adjusts the legacy jQuery timer fallback; modern apps usually prefer the other options.

jQuery.fx.interval
jQuery.fx.interval = 50

Global ms between jQuery timer ticks on browsers without rAF. Deprecated 3.0, removed 4.0. Must stop all animations before changing.

requestAnimationFrame
requestAnimationFrame(step)

Browser-native frame loop synced to display refresh (~60 fps). jQuery 3+ uses rAF when available, bypassing fx.interval entirely.

jQuery.fx.off
jQuery.fx.off = true

Sibling global property that disables all jQuery effects. Durations become 0 and elements jump to end states — not a tick-rate tweak.

CSS transitions
transition: left 2s ease

GPU-friendly, per-property timing in stylesheets. No jQuery timer or fx queue involved; preferred for modern UI motion.

Examples Gallery

Each example demonstrates a core jQuery.fx.interval concept from reading the default to modern alternatives. Open DevTools or use the Try-it links. Example 1 mirrors the property read pattern on api.jquery.com/jQuery.fx.interval/.

📚 Getting Started

Read the default jQuery.fx.interval value and compare slow versus default timer ticks on the legacy fallback path.

Example 1 — Read Default: Log jQuery.fx.interval Before Any Change

Before modifying anything, log the current global interval. On jQuery 1.x–3.x with the timer fallback, you should see 13 — the default milliseconds between animation ticks.

jQuery
// Read the global tick interval (default 13 ms)
console.log( "jQuery.fx.interval:", jQuery.fx.interval );

// Confirm type is a Number
console.log( "typeof:", typeof jQuery.fx.interval );

// On jQuery 3+ with requestAnimationFrame, changing this later
// may have no visible effect even though the property still reads 13
$( "#log-default" ).on( "click", function() {
  $( "#output" ).text(
    "jQuery.fx.interval = " + jQuery.fx.interval + " ms"
  );
} );
Try It Yourself

How It Works

Reading jQuery.fx.interval returns the current global tick rate without side effects. The value is always a number in milliseconds. On jQuery 4.0+, the property no longer exists — code that reads it should feature-detect or target older jQuery versions only.

Example 2 — Slow vs Default: Stop All, Set Interval 50, Animate, Reset to 13

Stop every running animation, set jQuery.fx.interval = 50, run a 2-second .animate(), then stop again and reset to 13 for comparison. On timer-fallback browsers the box moves in visibly chunkier steps at 50 ms.

jQuery
function stopAll() {
  $( ":animated" ).stop( true, true );
}
$( "#slow-tick" ).on( "click", function() {
  stopAll();
  jQuery.fx.interval = 50;
  $( "#tick-box" )
    .css({ left: 0 })
    .animate({ left: 280 }, 2000 );
} );
$( "#default-tick" ).on( "click", function() {
  stopAll();
  jQuery.fx.interval = 13;
  $( "#tick-box" )
    .css({ left: 0 })
    .animate({ left: 280 }, 2000 );
} );
Try It Yourself

How It Works

Each tick advances the tween proportionally. Fewer ticks over the same 2000 ms duration means larger jumps per frame on the timer path. Stopping all animations first ensures the new interval applies to the next run. Resetting to 13 restores jQuery’s default behavior for subsequent demos.

📈 Advanced Patterns

Global change rules, legacy timer versus rAF concepts, and why modern apps should not rely on fx.interval.

Example 3 — Global Rule: Changing Interval Mid-Animation Has No Effect

Start an animation at the default interval, then assign jQuery.fx.interval = 50 while it is still running. The active tween keeps using the old tick rate until you stop all animations and start fresh.

jQuery
jQuery.fx.interval = 13;
$( "#start-move" ).on( "click", function() {
  $( "#rule-box" )
    .stop( true, true )
    .css({ left: 0 })
    .animate({ left: 280 }, 3000 );
} );
$( "#change-mid" ).on( "click", function() {
  // This does NOT affect the animation already running:
  jQuery.fx.interval = 50;
  $( "#status" ).text(
    "Set fx.interval to 50 mid-flight - active tween still on old timer"
  );
} );
$( "#restart-slow" ).on( "click", function() {
  $( ":animated" ).stop( true, true );
  jQuery.fx.interval = 50;
  $( "#rule-box" )
    .css({ left: 0 })
    .animate({ left: 280 }, 3000 );
  $( "#status" ).text(
    "Stopped all, set 50, restarted - new interval applies"
  );
} );
Try It Yourself

How It Works

jQuery registers one global timer when the first animation starts. Changing fx.interval updates the property value but does not reconfigure the active timer mid-flight. Call $( ":animated" ).stop( true, true ) or wait for all tweens to finish before expecting a new interval to take effect.

Example 4 — Legacy Fallback Concept: requestAnimationFrame vs Timer Interval

Understand why fx.interval mattered historically. Browsers with requestAnimationFrame paint animations on the compositor’s schedule (~60 Hz). Legacy browsers without rAF used setInterval at jQuery.fx.interval ms instead.

jQuery
var hasRAF = !!window.requestAnimationFrame;
$( "#check-rAF" ).on( "click", function() {
  var msg = hasRAF
    ? "rAF supported: jQuery.fx.interval is ignored for smooth updates"
    : "No rAF: jQuery.fx.interval controls tick rate (default 13 ms)";
  $( "#rAF-status" ).text( msg );
  console.log( "requestAnimationFrame:", hasRAF );
  console.log( "jQuery.fx.interval:", jQuery.fx.interval );
} );

// Conceptual comparison (not jQuery internals):
// rAF path:     browser paints -> jQuery updates tween -> repeat
// Timer path:   every fx.interval ms -> jQuery updates tween -> repeat
Try It Yourself

How It Works

jQuery 3.0 deprecated fx.interval precisely because rAF became universal. The property remains documented for developers maintaining code that ran on IE 9 and similar environments where timer granularity directly affected perceived smoothness. Today, feature-detect rAF rather than tuning fx.interval.

Example 5 — Practical Note: Prefer CSS Transitions or rAF; Do Not Rely on fx.interval

Modern applications should animate with CSS transition or explicit requestAnimationFrame loops. Treat jQuery.fx.interval as historical API surface — or use sibling global jQuery.fx.off only to disable effects for accessibility testing.

jQuery
// Modern: CSS transition (GPU-friendly, per-element timing)
$( "#css-move" ).on( "click", function() {
  $( "#modern-box" ).css({
    transition: "left 2s ease",
    left: $( this ).data( "target" ) ? 0 : 280
  });
  $( this ).data( "target", !$( this ).data( "target" ) );
} );

// Legacy jQuery global toggle (sibling to fx.interval):
// jQuery.fx.off = true;  // disables ALL effects instantly

// Avoid in new code:
// jQuery.fx.interval = 50;  // deprecated, removed in jQuery 4.0
Try It Yourself

How It Works

CSS transitions delegate timing to the browser engine with hardware acceleration on many properties. jQuery.fx.off is the practical global knob for turning off jQuery motion entirely. fx.interval was a low-level timer tweak for a code path that modern jQuery rarely uses — plan migrations away from it before upgrading to jQuery 4.0.

🚀 Common Use Cases

  • Legacy IE maintenance — tune tick smoothness on browsers without requestAnimationFrame by raising or lowering jQuery.fx.interval after stopping animations.
  • Debugging choppy jQuery motion — log jQuery.fx.interval and check whether rAF is active before blaming duration or easing settings.
  • Performance profiling on old hardware — temporarily increase the interval to reduce timer callbacks during heavy multi-element animations on timer-fallback browsers.
  • Educational demos — compare timer-driven versus rAF-driven updates so beginners understand jQuery’s animation pipeline evolution.
  • Pre-migration audits — search codebases for fx.interval assignments before upgrading from jQuery 3.x to 4.0 where the property is removed.
  • Accessibility testing pairs — use jQuery.fx.off alongside interval knowledge to disable or inspect effect behavior globally.

🧠 How jQuery.fx.interval Drives Animation Ticks

1

Animation starts

A method like .animate() enqueues a tween on the fx queue. jQuery checks for requestAnimationFrame; if unavailable, it starts or reuses the global timer at jQuery.fx.interval ms.

Trigger
2

Tick fires

Each tick advances every active tween by a fraction of its remaining duration. Lower interval values mean more frequent updates and smoother motion on the timer path; higher values mean fewer, larger steps.

Update
3

Global interval change

Assigning a new number to jQuery.fx.interval updates the stored value only. The running timer keeps its current cadence until all animations stop and a new cycle begins.

Config
4

rAF bypass or completion

On modern browsers, rAF replaces the timer entirely and fx.interval is ignored. When the last tween completes, the global timer idles until the next animation needs it.

📝 Notes

  • Added in jQuery 1.4.3 as a global Number property on jQuery.fx, not an instance method.
  • Default value is 13 milliseconds between timer-driven animation ticks.
  • Deprecated in jQuery 3.0; has no effect when requestAnimationFrame is supported.
  • Removed entirely in jQuery 4.0 — migrate away before upgrading.
  • One global interval shared by all jQuery animations on the page; not per-element or per-queue.
  • Stop all running animations with $( ":animated" ).stop( true, true ) before changing the interval.
  • Sibling global jQuery.fx.off = true disables all effects rather than adjusting tick rate.

Browser Support

jQuery.fx.interval existed on jQuery 1.4.3 through 3.x. It only affected animation timing on browsers without requestAnimationFrame. The property was removed in jQuery 4.0.

Legacy · Deprecated 3.0 · Removed 4.0

jQuery.fx.interval

Relevant only on legacy timer-fallback paths in jQuery 1.x–3.x. Modern Chrome, Firefox, Safari, and Edge use requestAnimationFrame inside jQuery 3+, so changing fx.interval has no visible effect. Not available in jQuery 4.0+.

Legacy Timer fallback only
Google Chrome All versions · Desktop & Mobile
Full support
Mozilla Firefox All versions · Desktop & Mobile
Full support
Apple Safari All versions · macOS & iOS
Full support
Microsoft Edge All versions · Chromium & Legacy
Full support
Internet Explorer IE 6+ · Legacy environments
Full support
Opera All modern versions
Full support
fx.interval Deprecated

Bottom line: Prefer CSS transitions or requestAnimationFrame for new animation work. Learn .queue() next to inspect the fx pipeline that these ticks advance.

Conclusion

jQuery.fx.interval is a global static property that set milliseconds between animation ticks on legacy browsers without requestAnimationFrame. The default is 13 ms, but modern jQuery ignores it when rAF is available, and jQuery 4.0 removes the property altogether.

Reach for fx.interval only when maintaining older codebases or teaching how jQuery’s timer fallback worked. For new projects, use CSS transitions, rAF, or standard jQuery effect durations instead. Pair global effect control with sibling jQuery.fx.off, and continue to .queue() to inspect the fx pipeline these ticks advance.

💡 Best Practices

✅ Do

  • Stop all animations before changing jQuery.fx.interval
  • Feature-detect requestAnimationFrame before expecting interval changes to matter
  • Use CSS transitions or rAF for new smooth UI motion
  • Audit code for fx.interval assignments before jQuery 4.0 upgrades
  • Use jQuery.fx.off for global effect disable during accessibility testing

❌ Don’t

  • Change fx.interval mid-animation and expect immediate effect
  • Rely on fx.interval in modern rAF-capable browsers
  • Confuse fx.interval with per-animation duration options
  • Build new features around a property removed in jQuery 4.0
  • Assume each element can have its own tick interval — it is one global value

Key Takeaways

Knowledge Unlocked

Five things to remember about jQuery.fx.interval

Global timer tuning for legacy jQuery animation ticks.

5
Core concepts
02

Static property

Not a method

API
🔄 03

rAF bypass

No effect today

Modern
📝 04

Stop first

Idle before change

Rule
05

Removed 4.0

Use CSS / rAF

Migrate

❓ Frequently Asked Questions

jQuery.fx.interval is a global static property that sets the rate in milliseconds at which jQuery's animation engine fires update ticks. Each tick advances in-progress tweens by one step. It is not an instance method on a jQuery collection — it applies to every animation running through jQuery's shared fx timer.
The default is 13 milliseconds. That value was chosen as a balance between smooth-enough motion and acceptable CPU use on older browsers that relied on setInterval or setTimeout for animation frames instead of requestAnimationFrame.
Yes. The property was deprecated in jQuery 3.0 and removed entirely in jQuery 4.0. Modern jQuery versions prefer requestAnimationFrame when the browser supports it, so changing fx.interval has little or no effect in current environments.
No. When requestAnimationFrame is available, jQuery syncs animation updates to the browser's compositor frame loop and ignores fx.interval. The property only adjusts timing on legacy browsers that fall back to a timer-based global interval.
Because jQuery uses one shared global interval for all animations, you must stop every running animation before changing fx.interval. If any tween is still active, the old interval keeps driving updates until the fx pipeline is completely idle.
Yes. There is a single jQuery.fx.interval value for the entire page. Raising it slows every jQuery animation that uses the timer fallback; lowering it makes ticks fire more often. It does not target individual elements or queues — use duration, easing, or CSS transitions for per-animation control instead.
Did you know?

The default of 13 milliseconds for jQuery.fx.interval was chosen to approximate smooth motion near 77 frames per second on timer-driven browsers — faster than the old 25 ms (setInterval(..., 25)) default jQuery used before 1.4.3. When requestAnimationFrame became widely available, jQuery 3.0 deprecated the property because the browser’s own ~16.7 ms frame loop made manual interval tuning obsolete. The official docs at api.jquery.com/jQuery.fx.interval/ note it was removed entirely in jQuery 4.0.

Continue to jQuery.fx.off

Globally disable all jQuery animations for accessibility, testing, or low-resource devices.

jQuery.fx.off →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

6 people found this page helpful