Tax Regime Compare

Compares India's old and new income-tax regimes for a salaried person and flags a choice that costs more or deductions that don't count.

StopsPicked the costlier tax regime

Installation

pnpm dlx shadcn@latest add https://bollard-ui.vercel.app/r/tax-regime-compare.json

The files land in your project. They're yours to edit.

Usage

tax-regime-compare-usage.tsx
import { TaxRegimeCompare, type TaxInput } from "@/components/ui/tax-regime-compare"

return <TaxRegimeCompare value={value} onValueChange={setValue} />

What it catches

  • The regime that costs more for these inputs
  • Break-even deductions where the old regime starts to win
  • Deductions that don't count under the new regime
  • Claims above their limits (80C ₹1.5 lakh, 80D, 80CCD(1B) ₹50,000, home loan)
  • HRA at 50% of salary in the eight listed cities, 40% elsewhere

Props

TaxRegimeCompare props
PropTypeDefault
value

Controlled salary, deductions and chosen regime.

TaxInput—
defaultValue

Initial input when uncontrolled.

Partial<TaxInput>—
onValueChange

Called on every edit or fix.

(value: TaxInput) => void—
onCompare

Called when the comparison changes.

(result: TaxComparison) => void—
options

Age band, senior parents and government employer.

TaxOptions{}
locale

Locale for money.

string"en-IN"
messages

Any visible string; `labels` may be partial.

Partial<Omit<TaxRegimeMessages, "labels">> & { labels?: Partial<TaxRegimeMessages["labels"]> }—

* required. Also accepts the native props of <section> (className, aria-*, data-*…), passed through to it.

Accessibility

  • Section labelled by its heading; every input has a <label>
  • Result status in a polite live region
  • After a fix, focus moves to the next fix
  • External verify link has visible text

Only what the source does. Test with your own screen reader and content before shipping.

Limitations

  • Informational estimate for resident salaried individuals; not tax advice
  • Covers common deductions only: capital gains, business income, surcharge edge cases and marginal-relief nuances may be missing
  • Rules change every Budget; check the verified date and source

Rules

Rules last verified:

Confirmed: no change in s.202 rates for tax year 2026-27; new-regime slabs 0–4L nil … above 24L 30%; rebate ₹60,000 up to ₹12 lakh (new) and ₹12,500 up to ₹5 lakh (old); 80C ₹1.5 lakh, 80D ₹25,000/₹50,000, 80CCD(1B) ₹50,000; HRA 50% for Mumbai, Kolkata, Delhi, Chennai, Hyderabad, Pune, Ahmedabad, Bengaluru. Standard deduction (₹75,000/₹50,000) and the ₹2 lakh home-loan limit were not re-checked on a primary page. Informational; verify with the official source or a professional. Copied components don't update themselves, so re-check after rule changes (see updating a component).

What it stops

Picked the costlier tax regime

Also known as

income tax · old regime · new regime · itr · hra · 80c · 80d · nps

Field type

Dependencies

Pairs well with