Moving from Netlify to Hostinger: step-by-step
Netlify is a great place to start — free tier, instant Git deploys, form handling, edge functions. But like Vercel, it's built around a serverless model that starts to show cracks when your project grows. Maybe you're hitting bandwidth limits, need a persistent backend, or just want a simpler single-provider setup. Whatever the reason, migrating from Netlify to Hostinger is straightforward. This guide walks through the full process with minimal downtime.
Before you start
Take stock of what you're actually using on Netlify:
If you're only using Netlify for static hosting and Git deploys — which most people are — the migration takes an afternoon.
Step 1: Get your Hostinger hosting ready
Sign up for a Hostinger plan if you haven't already. For a static React app, Shared Hosting is sufficient. For anything with a Node.js backend, go with Cloud Hosting or VPS.
Once your plan is active:
- Log in to hPanel
- Go to Hosting and find your plan
- Note the server IP — you'll need it for DNS later
Step 2: Build your React app locally
Do a clean build on your local machine:
npm run build Check the dist/ (Vite) or build/ (CRA) folder looks correct. Also check your netlify.toml if you have one — it may contain redirect rules or headers you'll want to replicate on Hostinger.
Step 3: Upload your files to Hostinger
Via File Manager:
- In hPanel go to Files → File Manager
- Open the
public_htmlfolder - Delete any placeholder files already there
- Upload everything inside your
dist/orbuild/folder directly intopublic_html— not the folder itself, just its contents - Confirm
index.htmlis at the root ofpublic_html
Via Git (recommended for ongoing maintenance):
- In hPanel go to Advanced → Git
- Connect your repository and set the deployment path to
public_html - Set the branch to
main
Hostinger's Git deployment on shared hosting won't run npm run build for you. Either commit your dist/ folder or use a GitHub Action to build and push to a deploy branch — see the Vite deployment article for that setup.
Step 4: Replicate your Netlify redirects
If you're using React Router, you need all routes to fall back to index.html — otherwise page refreshes give a 404.
On Netlify this is handled automatically or via a _redirects file. On Hostinger shared hosting, create a .htaccess file in public_html:
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L] If you had custom redirects in your netlify.toml, replicate them here using Apache RewriteRule directives. The syntax is different but the logic is the same.
Step 5: Test on Hostinger before switching DNS
Before you touch your DNS, test your site on the temporary domain hPanel provides (something like srv###.hostinger.com — find it in your hosting dashboard).
Verify:
- The homepage loads
- Navigation between pages works
- Page refreshes don't 404
- Assets (images, fonts, JS) all load correctly
- Any forms or integrations you kept still work
Only proceed to the DNS switch once everything looks right here.
Step 6: Add your domain in hPanel
- In hPanel go to Domains → Add Domain (or it may already be listed if you bought it through Hostinger)
- Add your domain name
- Hostinger will show you the nameservers or A record values to set
Step 7: Switch your DNS
Do this during a low-traffic period. You have two options:
Option A — Change nameservers
At your domain registrar, update the nameservers to Hostinger's:
ns1.dns-parking.com
ns2.dns-parking.com Can take up to 48 hours to propagate, though usually under 4 hours.
Option B — Update A record only (faster, more surgical)
If you want to keep DNS elsewhere, just update the A record:
Type: A Name: @ Value: YOUR_HOSTINGER_SERVER_IP TTL: 300 Pro tip
Lower your TTL to 300 (5 minutes) a day before the migration. That way DNS changes propagate fast. After the migration is stable, raise it back to 3600.
Step 8: Enable HTTPS on Hostinger
Once DNS is pointing at Hostinger, go to Security → SSL in hPanel and enable the free Let's Encrypt certificate. This is one click and takes a minute to issue.
If you try immediately after switching DNS and it fails, wait 15–30 minutes for propagation and try again.
Step 9: Verify everything is live
Once DNS has propagated, visit your domain and confirm:
- HTTPS is working (padlock in browser)
- All pages load correctly
- No mixed content warnings in browser dev tools
- Forms and any third-party integrations still work
Step 10: Remove your site from Netlify
Once everything is verified on Hostinger and DNS has fully propagated, go to Site settings → Danger zone → Delete this site in Netlify to avoid confusion or accidental deploys. If you were on a paid Netlify plan, cancel it now.
Common issues
Site loads on Hostinger temp domain but not on custom domain
DNS hasn't propagated yet. Wait and check again at dnschecker.org.
HTTPS not working
SSL certificate failed to issue. Check that your domain's A record is pointing at the correct Hostinger IP, then try enabling SSL again in hPanel.
Page refresh gives 404
The .htaccess file is missing or in the wrong location. It must be directly inside public_html, not inside a subfolder.
Images or fonts not loading
Check the browser network tab for 404s. Usually means asset paths are wrong — verify your Vite base config if your app isn't at the domain root.
Netlify Forms stopped working
They're Netlify-specific and won't work on Hostinger. Replace with Formspree (free tier available) or a simple backend endpoint.
Summary
Migrating from Netlify to Hostinger is mostly a matter of copying files, replicating your redirect rules in .htaccess, and switching DNS. The biggest risk is downtime during the DNS cutover — minimize it by lowering your TTL ahead of time and testing thoroughly on the Hostinger temp domain first. For a pure static React app, the whole process takes a few hours and leaves you with a simpler, cheaper setup.
Plans from $2.99/mo with a 30-day money-back guarantee.
Get started with Hostinger →