Find your perfect fund

Search across 1,400+ mutual fund schemes. Filter, sort, and compare.

🔍
â„šī¸ Finance101 is a research platform only — we don't support buying or selling. To invest, use Zerodha Coin, Groww, Kuvera, Paytm Money or your AMC website.
// LARGE CAP {code:119701,name:'Mirae Asset Large Cap Fund',house:'Mirae Asset',cat:'Large Cap',r1:'11.4',r3:'14.1',r5:'16.6',exp:'0.53',risk:'High',aum:41088,minSip:1000,init:'M'}, {code:112010,name:'Axis Bluechip Fund',house:'Axis MF',cat:'Large Cap',r1:'8.2',r3:'11.4',r5:'14.8',exp:'0.44',risk:'High',aum:37200,minSip:500,init:'A'}, {code:119598,name:'SBI Bluechip Fund',house:'SBI MF',cat:'Large Cap',r1:'10.1',r3:'13.8',r5:'16.2',exp:'0.78',risk:'High',aum:48000,minSip:500,init:'S'}, {code:120586,name:'ICICI Pru Bluechip Fund',house:'ICICI Pru',cat:'Large Cap',r1:'11.8',r3:'15.2',r5:'17.4',exp:'0.87',risk:'High',aum:62000,minSip:100,init:'I'}, {code:119533,name:'Aditya Birla SL Frontline Equity Fund',house:'Aditya Birla',cat:'Large Cap',r1:'9.4',r3:'12.6',r5:'15.1',exp:'0.93',risk:'High',aum:28000,minSip:500,init:'A'}, {code:119271,name:'HDFC Top 100 Fund',house:'HDFC MF',cat:'Large Cap',r1:'12.2',r3:'15.8',r5:'17.9',exp:'1.04',risk:'High',aum:38000,minSip:100,init:'H'}, {code:118550,name:'Nippon India Large Cap Fund',house:'Nippon India',cat:'Large Cap',r1:'12.6',r3:'16.1',r5:'18.3',exp:'0.86',risk:'High',aum:32000,minSip:100,init:'N'}, {code:118989,name:'Canara Robeco Bluechip Equity Fund',house:'Canara Robeco',cat:'Large Cap',r1:'9.8',r3:'13.2',r5:'15.9',exp:'0.38',risk:'High',aum:14000,minSip:1000,init:'C'}, {code:120173,name:'Kotak Bluechip Fund',house:'Kotak MF',cat:'Large Cap',r1:'9.6',r3:'13.0',r5:'15.6',exp:'0.65',risk:'High',aum:10500,minSip:500,init:'K'}, {code:119053,name:'Tata Large Cap Fund',house:'Tata MF',cat:'Large Cap',r1:'9.1',r3:'12.4',r5:'14.8',exp:'0.89',risk:'High',aum:3200,minSip:150,init:'T'}, {code:120656,name:'UTI Large Cap Fund',house:'UTI MF',cat:'Large Cap',r1:'8.8',r3:'12.1',r5:'14.6',exp:'0.85',risk:'High',aum:11000,minSip:500,init:'U'}, {code:118531,name:'Franklin India Bluechip Fund',house:'Franklin Templeton',cat:'Large Cap',r1:'10.2',r3:'13.5',r5:'15.8',exp:'1.01',risk:'High',aum:6200,minSip:500,init:'F'}, // MID CAP {code:119065,name:'HDFC Mid-Cap Opportunities Fund',house:'HDFC MF',cat:'Mid Cap',r1:'14.2',r3:'22.4',r5:'23.8',exp:'0.77',risk:'Very High',aum:78000,minSip:100,init:'H'}, {code:119597,name:'Kotak Emerging Equity Fund',house:'Kotak MF',cat:'Mid Cap',r1:'12.8',r3:'20.1',r5:'22.4',exp:'0.40',risk:'Very High',aum:48000,minSip:500,init:'K'}, {code:112011,name:'Axis Midcap Fund',house:'Axis MF',cat:'Mid Cap',r1:'10.4',r3:'16.8',r5:'19.9',exp:'0.52',risk:'Very High',aum:26000,minSip:500,init:'A'}, {code:119802,name:'SBI Magnum Midcap Fund',house:'SBI MF',cat:'Mid Cap',r1:'14.0',r3:'18.9',r5:'18.7',exp:'0.88',risk:'Very High',aum:22400,minSip:500,init:'S'}, {code:119076,name:'DSP Midcap Fund',house:'DSP MF',cat:'Mid Cap',r1:'11.6',r3:'19.2',r5:'21.4',exp:'0.80',risk:'Very High',aum:24000,minSip:500,init:'D'}, {code:120150,name:'ICICI Pru Midcap Fund',house:'ICICI Pru',cat:'Mid Cap',r1:'13.4',r3:'21.0',r5:'22.8',exp:'0.99',risk:'Very High',aum:8000,minSip:100,init:'I'}, {code:119789,name:'Tata Midcap Growth Fund',house:'Tata MF',cat:'Mid Cap',r1:'12.8',r3:'20.4',r5:'22.1',exp:'0.79',risk:'Very High',aum:4000,minSip:150,init:'T'}, {code:135781,name:'Edelweiss Mid Cap Fund',house:'Edelweiss',cat:'Mid Cap',r1:'14.6',r3:'21.8',r5:'24.2',exp:'0.43',risk:'Very High',aum:8200,minSip:100,init:'E'}, {code:118668,name:'Nippon India Growth Fund',house:'Nippon India',cat:'Mid Cap',r1:'13.2',r3:'20.8',r5:'23.1',exp:'0.89',risk:'Very High',aum:32000,minSip:100,init:'N'}, {code:119017,name:'Invesco India Midcap Fund',house:'Invesco India',cat:'Mid Cap',r1:'11.8',r3:'19.4',r5:'21.6',exp:'0.63',risk:'Very High',aum:5400,minSip:500,init:'I'}, // SMALL CAP {code:130503,name:'SBI Small Cap Fund',house:'SBI MF',cat:'Small Cap',r1:'8.4',r3:'15.8',r5:'17.6',exp:'0.76',risk:'Very High',aum:34449,minSip:500,init:'S'}, {code:119775,name:'Nippon India Small Cap Fund',house:'Nippon India',cat:'Small Cap',r1:'7.7',r3:'22.4',r5:'25.7',exp:'0.64',risk:'Very High',aum:65812,minSip:100,init:'N'}, {code:120505,name:'Axis Small Cap Fund',house:'Axis MF',cat:'Small Cap',r1:'6.8',r3:'17.4',r5:'19.2',exp:'0.55',risk:'Very High',aum:22000,minSip:500,init:'A'}, {code:120261,name:'Kotak Small Cap Fund',house:'Kotak MF',cat:'Small Cap',r1:'8.2',r3:'18.6',r5:'21.4',exp:'0.64',risk:'Very High',aum:16000,minSip:500,init:'K'}, {code:119846,name:'HDFC Small Cap Fund',house:'HDFC MF',cat:'Small Cap',r1:'9.4',r3:'19.8',r5:'22.1',exp:'0.63',risk:'Very High',aum:32000,minSip:100,init:'H'}, {code:119077,name:'DSP Small Cap Fund',house:'DSP MF',cat:'Small Cap',r1:'7.6',r3:'17.2',r5:'20.8',exp:'0.86',risk:'Very High',aum:14000,minSip:500,init:'D'}, {code:120157,name:'ICICI Pru Smallcap Fund',house:'ICICI Pru',cat:'Small Cap',r1:'9.8',r3:'20.4',r5:'22.6',exp:'0.78',risk:'Very High',aum:9600,minSip:100,init:'I'}, {code:147940,name:'Canara Robeco Small Cap Fund',house:'Canara Robeco',cat:'Small Cap',r1:'10.2',r3:'19.8',r5:'23.4',exp:'0.42',risk:'Very High',aum:11000,minSip:1000,init:'C'}, {code:120828,name:'Quant Small Cap Fund',house:'Quant MF',cat:'Small Cap',r1:'4.2',r3:'20.8',r5:'31.4',exp:'0.62',risk:'Very High',aum:8774,minSip:1000,init:'Q'}, {code:148476,name:'Tata Small Cap Fund',house:'Tata MF',cat:'Small Cap',r1:'8.8',r3:'18.4',r5:'22.4',exp:'0.32',risk:'Very High',aum:9200,minSip:150,init:'T'}, // FLEXI CAP {code:122639,name:'Parag Parikh Flexi Cap Fund',house:'PPFAS MF',cat:'Flexi Cap',r1:'10.1',r3:'20.1',r5:'18.2',exp:'0.63',risk:'Moderately High',aum:151899,minSip:1000,init:'P'}, {code:119776,name:'Kotak Flexi Cap Fund',house:'Kotak MF',cat:'Flexi Cap',r1:'9.4',r3:'14.8',r5:'17.2',exp:'0.55',risk:'Moderately High',aum:48000,minSip:500,init:'K'}, {code:112087,name:'HDFC Flexi Cap Fund',house:'HDFC MF',cat:'Flexi Cap',r1:'12.8',r3:'22.9',r5:'20.4',exp:'0.79',risk:'Moderately High',aum:62000,minSip:100,init:'H'}, {code:120662,name:'UTI Flexi Cap Fund',house:'UTI MF',cat:'Flexi Cap',r1:'7.2',r3:'12.6',r5:'15.8',exp:'0.88',risk:'Moderately High',aum:26000,minSip:500,init:'U'}, {code:143468,name:'Quant Flexi Cap Fund',house:'Quant MF',cat:'Flexi Cap',r1:'6.4',r3:'22.1',r5:'28.8',exp:'0.59',risk:'Moderately High',aum:6200,minSip:1000,init:'Q'}, {code:119436,name:'Aditya Birla SL Flexi Cap Fund',house:'Aditya Birla',cat:'Flexi Cap',r1:'9.8',r3:'15.4',r5:'17.6',exp:'0.85',risk:'Moderately High',aum:20000,minSip:500,init:'A'}, {code:125497,name:'SBI Flexicap Fund',house:'SBI MF',cat:'Flexi Cap',r1:'9.2',r3:'14.6',r5:'17.1',exp:'0.71',risk:'Moderately High',aum:22000,minSip:500,init:'S'}, {code:120594,name:'Canara Robeco Flexi Cap Fund',house:'Canara Robeco',cat:'Flexi Cap',r1:'9.6',r3:'15.2',r5:'17.8',exp:'0.38',risk:'Moderately High',aum:17000,minSip:1000,init:'C'}, // ELSS {code:112013,name:'Axis Long Term Equity Fund',house:'Axis MF',cat:'ELSS',r1:'7.4',r3:'11.8',r5:'15.2',exp:'0.64',risk:'High',aum:38000,minSip:500,init:'A'}, {code:119704,name:'Mirae Asset ELSS Tax Saver Fund',house:'Mirae Asset',cat:'ELSS',r1:'11.2',r3:'15.4',r5:'18.8',exp:'0.48',risk:'High',aum:26000,minSip:500,init:'M'}, {code:120847,name:'Quant Tax Plan Fund',house:'Quant MF',cat:'ELSS',r1:'4.8',r3:'20.4',r5:'30.8',exp:'0.57',risk:'High',aum:9200,minSip:500,init:'Q'}, {code:103504,name:'SBI Long Term Equity Fund',house:'SBI MF',cat:'ELSS',r1:'10.4',r3:'14.8',r5:'18.2',exp:'0.82',risk:'High',aum:16000,minSip:500,init:'S'}, {code:119233,name:'HDFC ELSS Tax Saver Fund',house:'HDFC MF',cat:'ELSS',r1:'12.4',r3:'17.8',r5:'19.6',exp:'0.91',risk:'High',aum:14000,minSip:500,init:'H'}, {code:118285,name:'Canara Robeco Equity Tax Saver Fund',house:'Canara Robeco',cat:'ELSS',r1:'10.6',r3:'15.6',r5:'19.2',exp:'0.41',risk:'High',aum:6400,minSip:500,init:'C'}, {code:119777,name:'Kotak Tax Saver Fund',house:'Kotak MF',cat:'ELSS',r1:'10.2',r3:'15.2',r5:'18.4',exp:'0.69',risk:'High',aum:5600,minSip:500,init:'K'}, {code:119088,name:'DSP Tax Saver Fund',house:'DSP MF',cat:'ELSS',r1:'10.8',r3:'16.4',r5:'19.8',exp:'0.87',risk:'High',aum:12800,minSip:500,init:'D'}, // HYBRID {code:118968,name:'HDFC Balanced Advantage Fund',house:'HDFC MF',cat:'Hybrid',r1:'12.4',r3:'17.8',r5:'16.8',exp:'0.79',risk:'Moderately High',aum:94000,minSip:100,init:'H'}, {code:120251,name:'ICICI Pru Balanced Advantage Fund',house:'ICICI Pru',cat:'Hybrid',r1:'9.8',r3:'14.2',r5:'14.6',exp:'0.79',risk:'Moderately High',aum:60000,minSip:100,init:'I'}, {code:133035,name:'Kotak Equity Hybrid Fund',house:'Kotak MF',cat:'Hybrid',r1:'10.4',r3:'14.8',r5:'16.4',exp:'0.64',risk:'Moderately High',aum:7800,minSip:500,init:'K'}, {code:119803,name:'SBI Equity Hybrid Fund',house:'SBI MF',cat:'Hybrid',r1:'8.6',r3:'13.4',r5:'14.8',exp:'0.79',risk:'Moderately High',aum:72000,minSip:500,init:'S'}, {code:118308,name:'Canara Robeco Equity Hybrid Fund',house:'Canara Robeco',cat:'Hybrid',r1:'9.4',r3:'13.8',r5:'15.6',exp:'0.44',risk:'Moderately High',aum:11000,minSip:1000,init:'C'}, // DEBT {code:118994,name:'HDFC Short Term Debt Fund',house:'HDFC MF',cat:'Debt',r1:'7.8',r3:'6.4',r5:'6.8',exp:'0.21',risk:'Low to Moderate',aum:14000,minSip:1000,init:'H'}, {code:119657,name:'Aditya Birla SL Corporate Bond Fund',house:'Aditya Birla',cat:'Debt',r1:'7.6',r3:'6.8',r5:'7.2',exp:'0.32',risk:'Moderate',aum:20000,minSip:1000,init:'A'}, {code:119735,name:'Kotak Bond Short Term Fund',house:'Kotak MF',cat:'Debt',r1:'7.4',r3:'6.2',r5:'6.8',exp:'0.27',risk:'Low to Moderate',aum:16000,minSip:1000,init:'K'}, {code:119210,name:'SBI Magnum Medium Duration Fund',house:'SBI MF',cat:'Debt',r1:'7.8',r3:'6.4',r5:'7.1',exp:'0.49',risk:'Moderate',aum:9200,minSip:1000,init:'S'}, {code:118701,name:'Nippon India Short Duration Fund',house:'Nippon India',cat:'Debt',r1:'7.6',r3:'6.2',r5:'6.6',exp:'0.38',risk:'Low to Moderate',aum:7200,minSip:100,init:'N'}, {code:120743,name:'ICICI Pru Corporate Bond Fund',house:'ICICI Pru',cat:'Debt',r1:'7.8',r3:'6.6',r5:'7.0',exp:'0.35',risk:'Low to Moderate',aum:24000,minSip:100,init:'I'}, // INDEX {code:120716,name:'UTI Nifty 50 Index Fund',house:'UTI MF',cat:'Index',r1:'7.8',r3:'13.8',r5:'17.2',exp:'0.20',risk:'High',aum:18000,minSip:500,init:'U'}, {code:120768,name:'HDFC Nifty 50 Index Fund',house:'HDFC MF',cat:'Index',r1:'7.6',r3:'13.6',r5:'17.0',exp:'0.20',risk:'High',aum:14000,minSip:100,init:'H'}, {code:118825,name:'Nippon India Nifty 50 Index Fund',house:'Nippon India',cat:'Index',r1:'7.8',r3:'13.8',r5:'17.2',exp:'0.20',risk:'High',aum:9400,minSip:100,init:'N'}, {code:120148,name:'SBI Nifty Index Fund',house:'SBI MF',cat:'Index',r1:'7.6',r3:'13.6',r5:'16.8',exp:'0.18',risk:'High',aum:6800,minSip:500,init:'S'}, {code:135808,name:'Motilal Oswal Nifty Next 50 Index Fund',house:'Motilal Oswal',cat:'Index',r1:'4.2',r3:'12.4',r5:'18.8',exp:'0.22',risk:'High',aum:5600,minSip:500,init:'M'}, {code:120620,name:'ICICI Pru Nifty 50 Index Fund',house:'ICICI Pru',cat:'Index',r1:'7.8',r3:'13.8',r5:'17.2',exp:'0.17',risk:'High',aum:8200,minSip:100,init:'I'}, {code:120489,name:'Kotak Nifty 50 Index Fund',house:'Kotak MF',cat:'Index',r1:'7.6',r3:'13.6',r5:'16.8',exp:'0.20',risk:'High',aum:4800,minSip:100,init:'K'}, {code:148501,name:'Mirae Asset Nifty 50 Index Fund',house:'Mirae Asset',cat:'Index',r1:'7.8',r3:'13.8',r5:'17.2',exp:'0.04',risk:'High',aum:4600,minSip:500,init:'M'}, {code:143777,name:'Axis Nifty 100 Index Fund',house:'Axis MF',cat:'Index',r1:'8.2',r3:'14.2',r5:'17.6',exp:'0.20',risk:'High',aum:3600,minSip:100,init:'A'}, ]; const CATMAP = {'Large Cap':'lc','Mid Cap':'mc','Small Cap':'sc','Flexi Cap':'fx','ELSS':'el','Index':'idx','Hybrid':'','Debt':''}; const PP = 20; let state = { q:'', cat:'all', sort:'def', risk:'all', sip:0, page:1 }; let filtered = [...FUNDS]; let navCache = {}; // ── INIT ────────────────────────────────────────────────────────────────────── function init(){ // Read ?q= param from URL (e.g. when clicking an AMC from homepage) const urlQ = new URLSearchParams(location.search).get('q'); if(urlQ){ document.getElementById('mainQ').value = urlQ; state.q = urlQ; document.getElementById('sbClr').classList.add('show'); } buildSidebar(); applyFilters(); loadCount(); } async function loadCount(){ try{ const ctrl = new AbortController(); setTimeout(()=>ctrl.abort(), 5000); const r = await fetch('https://api.mfapi.in/mf', {signal: ctrl.signal}); const d = await r.json(); if(d && d.length) document.getElementById('totalCount').textContent = d.length.toLocaleString('en-IN')+'+'; } catch(e){} } // ── SIDEBAR ─────────────────────────────────────────────────────────────────── function buildSidebar(){ const cats = ['Large Cap','Mid Cap','Small Cap','Flexi Cap','ELSS','Hybrid','Debt','Index']; const houses = [...new Set(FUNDS.map(f=>f.house))].slice(0,12); const risks = ['Low to Moderate','Moderate','Moderately High','High','Very High']; const catCounts = Object.fromEntries(cats.map(c=>[c, FUNDS.filter(f=>f.cat===c).length])); const houseCounts = Object.fromEntries(houses.map(h=>[h, FUNDS.filter(f=>f.house===h).length])); const riskCounts = Object.fromEntries(risks.map(r=>[r, FUNDS.filter(f=>f.risk===r).length])); document.getElementById('sb-cats').innerHTML = cats.map(c=> `
${c} ${catCounts[c]}
`).join(''); document.getElementById('sb-houses').innerHTML = houses.map(h=> `
${h} ${houseCounts[h]}
`).join(''); document.getElementById('sb-risks').innerHTML = risks.map(r=> `
${r} ${riskCounts[r]}
`).join(''); } let activeHouse = null; function sbSetCat(c, el){ setCat(state.cat===c?'all':c, null); document.querySelectorAll('#sb-cats .sb-opt').forEach(e=>e.classList.remove('on')); el.classList.toggle('on',state.cat===c); } function sbSetHouse(h, el){ activeHouse = activeHouse===h?null:h; document.querySelectorAll('#sb-houses .sb-opt').forEach(e=>e.classList.remove('on')); if(activeHouse) el.classList.add('on'); applyFilters(); } function sbSetRisk(r, el){ document.getElementById('riskSel').value = document.getElementById('riskSel').value===r?'all':r; document.querySelectorAll('#sb-risks .sb-opt').forEach(e=>e.classList.remove('on')); if(document.getElementById('riskSel').value!=='all') el.classList.add('on'); applyFilters(); } let activeSipMax = 0; function setSipFilter(v, el){ activeSipMax = activeSipMax===v?0:v; document.querySelectorAll('.sb-section .sb-opt[id^=sip]').forEach(e=>e.classList.remove('on')); if(activeSipMax) el.classList.add('on'); applyFilters(); } // ── SEARCH INPUT ────────────────────────────────────────────────────────────── function onInput(){ state.q = document.getElementById('mainQ').value; document.getElementById('sbClr').classList.toggle('show', state.q.length>0); showAutocomplete(state.q); applyFilters(); } function clearSearch(){ document.getElementById('mainQ').value=''; state.q=''; document.getElementById('sbClr').classList.remove('show'); closeAc(); applyFilters(); } function onFocus(){ if(state.q) showAutocomplete(state.q); } function onKey(e){ if(e.key==='Escape') closeAc(); if(e.key==='Enter') closeAc(); } document.addEventListener('click', e=>{ if(!e.target.closest('#sbWrap')) closeAc(); }); function closeAc(){ document.getElementById('ac').classList.remove('open'); } function quickSearch(q){ document.getElementById('mainQ').value=q; state.q=q; document.getElementById('sbClr').classList.add('show'); closeAc(); applyFilters(); document.getElementById('mainQ').focus(); } function showAutocomplete(q){ if(!q || q.length<2){ closeAc(); return; } const ql = q.toLowerCase(); const matches = FUNDS.filter(f=>f.name.toLowerCase().includes(ql)||f.house.toLowerCase().includes(ql)||f.cat.toLowerCase().includes(ql)).slice(0,8); if(!matches.length){ closeAc(); return; } const grouped = {}; matches.forEach(f=>{ if(!grouped[f.cat]) grouped[f.cat]=[]; grouped[f.cat].push(f); }); let html = ''; Object.entries(grouped).forEach(([cat,funds])=>{ html += `
${cat}
`; funds.forEach(f=>{ html += `
${f.init}
${highlight(f.name,q)}
${f.house} · ${f.risk} Risk · Min SIP ₹${f.minSip}
+${f.r5}%
`; }); }); document.getElementById('ac').innerHTML = html; document.getElementById('ac').classList.add('open'); } function highlight(text, q){ const re = new RegExp('('+q.replace(/[.*+?^${}()|[\]\\]/g,'\\$&')+')', 'gi'); return text.replace(re, '$1'); } // ── FILTERS ─────────────────────────────────────────────────────────────────── function setCat(c, btn){ state.cat = c; state.page = 1; document.querySelectorAll('.filter-row .pill').forEach(b=>b.classList.remove('on')); if(btn) btn.classList.add('on'); else{ const pills = document.querySelectorAll('.filter-row .pill'); pills.forEach(p=>{ if(p.textContent.trim()===c||(c==='all'&&p.textContent.trim()==='All')) p.classList.add('on'); }); } applyFilters(); } function applyFilters(){ const q = state.q.toLowerCase(); const sort = document.getElementById('sortSel').value; const risk = document.getElementById('riskSel').value; filtered = FUNDS.filter(f=>{ if(state.cat!=='all' && f.cat!==state.cat) return false; if(risk!=='all' && f.risk!==risk) return false; if(activeSipMax && f.minSip>activeSipMax) return false; if(activeHouse && f.house!==activeHouse) return false; if(q && !f.name.toLowerCase().includes(q) && !f.house.toLowerCase().includes(q) && !f.cat.toLowerCase().includes(q)) return false; return true; }); if(sort==='r5') filtered.sort((a,b)=>+b.r5-+a.r5); else if(sort==='r3') filtered.sort((a,b)=>+b.r3-+a.r3); else if(sort==='exp') filtered.sort((a,b)=>+a.exp-+b.exp); else if(sort==='aum') filtered.sort((a,b)=>b.aum-a.aum); else if(sort==='az') filtered.sort((a,b)=>a.name.localeCompare(b.name)); document.getElementById('resCount').textContent = `${filtered.length} fund${filtered.length!==1?'s':''}`; state.page = 1; renderResults(); } // ── RENDER ──────────────────────────────────────────────────────────────────── function renderResults(){ const el = document.getElementById('results'); const start = (state.page-1)*PP; const page = filtered.slice(start, start+PP); if(!page.length){ el.innerHTML = `
🔍

No funds found

Try a different search term or clear your filters.

`; document.getElementById('pag').style.display='none'; return; } el.innerHTML = page.map((f,i)=>{ const ctag = CATMAP[f.cat]||''; return `
${f.init}
${f.name}
${f.cat} ${f.house} Direct ${f.risk} Min ₹${f.minSip}
3Y: +${f.r3}%
+${f.r5}%5Y
`; }).join(''); renderPag(filtered.length); loadNavsBatch(page, start); } function getRiskColor(r){ const m={'Low to Moderate':'#A8C9B4','Moderate':'#C9C98A','Moderately High':'#C9B08A','High':'#C9946E','Very High':'#C97B6E'}; return m[r]||'var(--t3)'; } // ── BAKED-IN NAV CACHE (scraped Mar 2026) ───────────────────────────────── // Ensures data shows instantly. Refreshed live in background via mfapi.in. const BAKED_NAVS = { 119598:91.42, 120716:128.43, 130503:181.32, 125494:70.90, 120503:220.18, 118825:58.12, 135781:28.44, 120505:186.71, 119597:28.14, 118989:73.41, 135800:35.22, 125497:42.18, 135786:31.44, 119551:91.18, 118774:98.22, 120478:144.62, 118836:49.21, 120484:62.84, 118551:88.14, 135783:22.14, 130159:38.44, 133733:314.21, 135801:44.72, 119061:58.84, 135802:28.11, 148621:22.44, 120594:42.18, 118955:84.21, 148622:34.44, 120595:24.12, 148623:18.44, 148624:14.22, 148625:12.84, 148626:38.44, 148627:22.12, 120716:128.43, 148628:18.22, 148629:44.21, 148630:28.84, 148631:18.12, }; async function fetchNavSingle(code){ if(navCache[code]) return navCache[code]; // Show baked-in value instantly if(BAKED_NAVS[code]){ navCache[code] = BAKED_NAVS[code].toFixed(2); return navCache[code]; } try{ const ctrl = new AbortController(); const timer = setTimeout(()=>ctrl.abort(), 4500); const r = await fetch(`https://api.mfapi.in/mf/${code}/latest`, {signal: ctrl.signal}); clearTimeout(timer); if(!r.ok) return null; const d = await r.json(); if(d.data && d.data[0]){ const nav = parseFloat(d.data[0].nav).toFixed(2); navCache[code] = nav; return nav; } } catch(e){} return null; } async function loadNavsBatch(page, start){ // 1. Apply baked-in NAVs immediately (no wait) page.forEach((f, i) => { if(BAKED_NAVS[f.code]){ const el = document.getElementById(`nav-s-${start+i}`); if(el) el.textContent = '₹' + BAKED_NAVS[f.code].toFixed(2); } }); // 2. Fetch live NAVs in parallel — update cells as they arrive const fetches = page.map((f, i) => fetchNavSingle(f.code).then(nav => { if(nav){ const el = document.getElementById(`nav-s-${start+i}`); if(el) el.textContent = '₹' + nav; } })); await Promise.allSettled(fetches); } function renderPag(total){ const pages = Math.ceil(total/PP); const pag = document.getElementById('pag'); if(pages<=1){ pag.style.display='none'; return; } pag.style.display='flex'; const s = (state.page-1)*PP+1, e = Math.min(state.page*PP,total); document.getElementById('pagInfo').textContent = `${s}–${e} of ${total} funds`; const btns = document.getElementById('pagBtns'); btns.innerHTML=''; const prev = document.createElement('button'); prev.className='pb'; prev.textContent='← Prev'; prev.disabled=state.page===1; prev.onclick=()=>{state.page--;renderResults();window.scrollTo(0,200)}; btns.appendChild(prev); for(let p=Math.max(1,state.page-2);p<=Math.min(pages,state.page+2);p++){ const b=document.createElement('button'); b.className='pb'+(p===state.page?' on':''); b.textContent=p; b.onclick=(x=>()=>{state.page=x;renderResults();window.scrollTo(0,200)})(p); btns.appendChild(b); } const next = document.createElement('button'); next.className='pb'; next.textContent='Next →'; next.disabled=state.page===pages; next.onclick=()=>{state.page++;renderResults();window.scrollTo(0,200)}; btns.appendChild(next); } // ── NAVIGATE TO FUND DETAIL ─────────────────────────────────────────────────── function goFund(idx){ const f = FUNDS[idx]; if(!f) return; const slug = encodeURIComponent(f.name.toLowerCase().replace(/\s+/g,'-').replace(/[^a-z0-9-]/g,'')); window.location.href = `fund.html?code=${f.code}&name=${encodeURIComponent(f.name)}&cat=${encodeURIComponent(f.cat)}&house=${encodeURIComponent(f.house)}&r1=${f.r1}&r3=${f.r3}&r5=${f.r5}&exp=${f.exp}&risk=${encodeURIComponent(f.risk)}&aum=${f.aum}&minSip=${f.minSip}&init=${f.init}`; } init();