> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gelato.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Pricing Plans

Choose a plan and get Compute Units you can use across all Gelato products. Learn how Compute Units work [here](/pricing/compute-units).

{(() => {
const pricingData = [
  {
    feature: "Price",
    free: "$0",
    pro: "$99",
    growth: "$399",
    enterprise: "Custom",
    isSection: false
  },
  {
    feature: "Compute Units",
    free: "10M",
    pro: "20M",
    growth: "100M",
    enterprise: "Custom",
    isSection: false
  },
  {
    feature: "Networks",
    free: "Testnet & Mainnet",
    pro: "Testnet & Mainnet",
    growth: "Testnet & Mainnet",
    enterprise: "Testnet & Mainnet",
    isSection: false
  },
  {
    feature: "Auto-scaling",
    free: "No",
    pro: "Yes",
    growth: "Yes",
    enterprise: "Yes",
    isSection: false
  },
  {
    feature: "Autoscale price per 1M CUs",
    free: "-",
    pro: "$40.00 per 1M CUs",
    growth: "$40.00 per 1M CUs",
    enterprise: "Custom",
    isSection: false
  },
  {
    feature: "Paymaster & Bundler",
    free: "",
    pro: "",
    growth: "",
    enterprise: "",
    isSection: true
  },
  {
    feature: "What You Can Do",
    free: "Up to 1K Requests",
    pro: "Up to 2K Requests",
    growth: "Up to 10K Requests",
    enterprise: "Custom",
    isSection: false
  },
  {
    feature: "Requests / minute",
    free: "1",
    pro: "10",
    growth: "50",
    enterprise: "Custom",
    isSection: false
  },
  {
    feature: "Gas premium fee",
    free: "20.00%",
    pro: "10.00%",
    growth: "8.00%",
    enterprise: "Custom",
    isSection: false
  },
  {
    feature: "Cost per request over minute limit",
    free: "-",
    pro: "40K CUs",
    growth: "30K CUs",
    enterprise: "Custom",
    isSection: false
  },
  {
    feature: "Private RPCs",
    free: "",
    pro: "",
    growth: "",
    enterprise: "",
    isSection: true
  },
  {
    feature: "What You Can Do",
    free: "Up to 4M RPC calls",
    pro: "Up to 20M RPC calls",
    growth: "Up to 40M RPC calls",
    enterprise: "Custom",
    isSection: false
  },
  {
    feature: "Rate Limit",
    free: "1K CUs/sec",
    pro: "5K CUs/sec",
    growth: "10K CUs/sec",
    enterprise: "Custom",
    isSection: false
  },
  {
    feature: "API Keys",
    free: "1",
    pro: "5",
    growth: "20",
    enterprise: "Unlimited",
    isSection: false
  },
  {
    feature: "Functions",
    free: "",
    pro: "",
    growth: "",
    enterprise: "",
    isSection: true
  },
  {
    feature: "What You Can Do",
    free: "-",
    pro: "Up to 1M Solidity runs",
    growth: "Up to 5M Solidity runs",
    enterprise: "Custom",
    isSection: false
  },
  {
    feature: "Gas premium fee",
    free: "-",
    pro: "Variable",
    growth: "Variable",
    enterprise: "Variable",
    isSection: false
  },
  {
    feature: "Memory / run",
    free: "-",
    pro: "128 MB",
    growth: "128 MB",
    enterprise: "256 MB",
    isSection: false
  },
  {
    feature: "Duration / run",
    free: "-",
    pro: "10 secs",
    growth: "30 secs",
    enterprise: "30 secs",
    isSection: false
  },
  {
    feature: "RPC requests / run",
    free: "-",
    pro: "10",
    growth: "50",
    enterprise: "100",
    isSection: false
  },
  {
    feature: "Storage / function",
    free: "-",
    pro: "1048576 MB",
    growth: "1048576 MB",
    enterprise: "1048576 MB",
    isSection: false
  },
  {
    feature: "Support",
    free: "",
    pro: "",
    growth: "",
    enterprise: "",
    isSection: true
  },
  {
    feature: "Support",
    free: "Standard support",
    pro: "Priority support",
    growth: "Priority support",
    enterprise: "VIP support",
    isSection: false
  }
];

return (
  <div className="w-full max-w-8xl mx-auto">
    <div className="overflow-x-auto rounded-lg border border-gray-200 dark:border-gray-700">
      <div className="flex w-full bg-gray-50 dark:bg-gray-900 min-w-[400px]">
        <div className="flex-1 py-4 px-3 sm:px-6 font-semibold text-gray-800 dark:text-white text-sm sm:text-base">
          Feature
        </div>
        <div className="flex-1 py-4 px-3 sm:px-6 font-semibold text-gray-800 dark:text-white text-sm sm:text-base text-center">
          Free
        </div>
        <div className="flex-1 py-4 px-3 sm:px-6 font-semibold text-gray-800 dark:text-white text-sm sm:text-base text-center">
          Pro
        </div>
        <div className="flex-1 py-4 px-3 sm:px-6 font-semibold text-gray-800 dark:text-white text-sm sm:text-base text-center">
          Growth
        </div>
        <div className="flex-1 py-4 px-3 sm:px-6 font-semibold text-gray-800 dark:text-white text-sm sm:text-base text-center">
          Enterprise
        </div>
      </div>
      
      {pricingData.map((item, index) => {
        const isLastItem = index === pricingData.length - 1;
        const nextItem = pricingData[index + 1];
        const shouldAddTopBorder = item.isSection && index > 0;
        const shouldAddBottomBorder = item.isSection || (nextItem && nextItem.isSection);
        
        return (
          <div
            key={index}
            className={`flex w-full transition-colors duration-200 min-w-[400px] ${
              item.isSection ? 'bg-gray-100 dark:bg-gray-800' : ''
            } ${
              shouldAddTopBorder ? 'border-t-2 border-gray-300 dark:border-gray-600' : ''
            } ${
              shouldAddBottomBorder ? 'border-b-2 border-gray-300 dark:border-gray-600' : 'border-b border-gray-100 dark:border-gray-800'
            }`}
          >
            <div className={`flex-1 py-3 sm:py-4 px-3 sm:px-6 text-sm sm:text-base leading-relaxed ${
              item.isSection 
                ? 'font-bold text-gray-900 dark:text-white' 
                : 'font-medium text-gray-700 dark:text-gray-300'
            }`}>
              <div style={{ wordBreak: 'break-word', overflowWrap: 'break-word' }}>
                {item.feature}
              </div>
            </div>
            <div className={`flex-1 py-3 sm:py-4 px-3 sm:px-6 text-sm sm:text-base text-center leading-relaxed ${
              item.isSection 
                ? 'text-gray-900 dark:text-white' 
                : 'text-gray-600 dark:text-gray-400'
            }`}>
              <div style={{ wordBreak: 'break-word', overflowWrap: 'break-word' }}>
                {item.free}
              </div>
            </div>
            <div className={`flex-1 py-3 sm:py-4 px-3 sm:px-6 text-sm sm:text-base text-center leading-relaxed ${
              item.isSection 
                ? 'text-gray-900 dark:text-white' 
                : 'text-gray-600 dark:text-gray-400'
            }`}>
              <div style={{ wordBreak: 'break-word', overflowWrap: 'break-word' }}>
                {item.pro}
              </div>
            </div>
            <div className={`flex-1 py-3 sm:py-4 px-3 sm:px-6 text-sm sm:text-base text-center leading-relaxed ${
              item.isSection 
                ? 'text-gray-900 dark:text-white' 
                : 'text-gray-600 dark:text-gray-400'
            }`}>
              <div style={{ wordBreak: 'break-word', overflowWrap: 'break-word' }}>
                {item.growth}
              </div>
            </div>
            <div className={`flex-1 py-3 sm:py-4 px-3 sm:px-6 text-sm sm:text-base text-center leading-relaxed ${
              item.isSection 
                ? 'text-gray-900 dark:text-white' 
                : 'text-gray-600 dark:text-gray-400'
            }`}>
              <div style={{ wordBreak: 'break-word', overflowWrap: 'break-word' }}>
                {item.enterprise}
              </div>
            </div>
          </div>
        );
      })}
    </div>
  </div>
);
})()}
