Skip to content

Instantly share code, notes, and snippets.

@RubenKelevra
Created April 11, 2026 20:03
Show Gist options
  • Select an option

  • Save RubenKelevra/4676f22ff0467513fc75026032745216 to your computer and use it in GitHub Desktop.

Select an option

Save RubenKelevra/4676f22ff0467513fc75026032745216 to your computer and use it in GitHub Desktop.
Make ChatGPT fast again

At the time of writing there's repaint bug in the animation framework of ChatGPT.com, causing it to boundlessly repaint even idle conversations, leading to high CPU and GPU (on weak GPUs) usage.

To fix this you can either past this into the console (after each page load):

(() => {
  const style = document.createElement('style');
  style.id = 'disable-animations-debug';
  style.textContent = `
    *, *::before, *::after {
      animation: none !important;
      transition: none !important;
      scroll-behavior: auto !important;
      caret-color: auto !important;
    }
  `;
  document.documentElement.appendChild(style);
  console.log('disabled CSS animations/transitions');
})();

Or use this Tampermonkey script:

// ==UserScript==
// @name         ChatGPT Disable Animations
// @namespace    https://chatgpt.com/
// @version      1.0
// @description  Disables CSS animations and transitions on ChatGPT to reduce idle CPU/GPU usage and typing lag
// @author       RubenKelevra
// @match        https://chatgpt.com/*
// @match        https://chat.openai.com/*
// @run-at       document-start
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  const STYLE_ID = 'disable-animations-debug';

  function injectStyle() {
    if (document.getElementById(STYLE_ID)) return;

    const style = document.createElement('style');
    style.id = STYLE_ID;
    style.textContent = `
      *, *::before, *::after {
        animation: none !important;
        transition: none !important;
        scroll-behavior: auto !important;
        caret-color: auto !important;
      }
    `;

    (document.documentElement || document.head || document.body).appendChild(style);
    console.log('[Tampermonkey] Disabled CSS animations/transitions on ChatGPT');
  }

  if (document.documentElement) {
    injectStyle();
  } else {
    document.addEventListener('DOMContentLoaded', injectStyle, { once: true });
  }
})();

If you're running on lowend hardware, you can disable even more eye candy, to get more performance:

// ==UserScript==
// @name         ChatGPT Low-Effects Mode
// @namespace    https://chatgpt.com/
// @version      1.0
// @description  Reduces ChatGPT CPU/GPU usage by disabling animations and costly visual effects
// @author       RubenKelevra
// @match        https://chatgpt.com/*
// @match        https://chat.openai.com/*
// @run-at       document-start
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  const STYLE_ID = 'chatgpt-low-effects-mode';

  const css = `
    /* Base: kill animations and transitions */
    *, *::before, *::after {
      animation: none !important;
      transition: none !important;
      scroll-behavior: auto !important;
      caret-color: auto !important;
      view-transition-name: none !important;
    }

    /* More aggressive: reduce expensive paint/compositing effects */
    *, *::before, *::after {
      backdrop-filter: none !important;
      -webkit-backdrop-filter: none !important;
      filter: none !important;
      text-shadow: none !important;
      box-shadow: none !important;
      will-change: auto !important;
    }

    /* Common spinner/progress UI */
    svg, [role="progressbar"] {
      animation: none !important;
      transition: none !important;
    }

    /* Optional: tone down sticky smoothness / scroll-linked effects */
    html, body {
      scroll-behavior: auto !important;
    }
  `;

  function injectStyle() {
    if (document.getElementById(STYLE_ID)) return;

    const style = document.createElement('style');
    style.id = STYLE_ID;
    style.textContent = css;

    const parent =
      document.head ||
      document.documentElement ||
      document.body;

    if (parent) {
      parent.appendChild(style);
      console.log('[Tampermonkey] ChatGPT Low-Effects Mode enabled');
    }
  }

  injectStyle();

  // Re-inject if the app replaces head/html during hydration/navigation
  const observer = new MutationObserver(() => {
    if (!document.getElementById(STYLE_ID)) {
      injectStyle();
    }
  });

  observer.observe(document.documentElement, {
    childList: true,
    subtree: true,
  });
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment