This error means Replit cannot deploy your project because it does not know how to start the application. You need to configure the run command in the .replit file or in Replit's deployment settings. For a Node.js app, set the run command to 'node index.js' or 'npm start' and ensure the server listens on 0.0.0.0.
What does "Deployment failed: missing start command" mean?
When Replit shows "Deployment failed: missing start command," it means the deployment system could not determine how to start your application in production. During development, Replit uses the 'run' button which reads from the .replit configuration file. But deployment has its own configuration that may not inherit the development run command.
Replit deployment requires several things to work: a valid start command, the server listening on 0.0.0.0 (not localhost), the correct port binding, and a homepage that responds within 5 seconds for the health check. If any of these are missing, deployment fails — but the error message only mentions the start command even if the actual issue is elsewhere.
A critical distinction in Replit is that workspace Secrets are NOT automatically carried over to deployments. If your start command depends on environment variables, you must add them separately in the Deployment tab's environment configuration. This catches many developers who have a working development setup but fail in deployment because the secrets are missing.
Common causes
The .replit configuration file does
not contain a run command or the run command is empty
The deployment configuration was not set up
Replit's deployment settings require a separate start command from the development run command
The start command references a file that
does not exist or uses a wrong path (e.g., 'node server.js' but the file is 'index.js')
The package.json 'start' script is
missing when using 'npm start' as the run command
The application listens on localhost instead of 0.0.0.0, causing
the health check to fail and appearing as a start failure
Workspace Secrets were not added
to the deployment environment, causing the app to crash on startup
How to fix the missing start command for Replit deployment
Open the .replit file in your project and add or fix the run command. For a Node.js project, set run = "node index.js" (replace index.js with your actual entry file). If you use npm scripts, make sure package.json has a "start" script defined, then set run = "npm start" in the .replit file. Next, go to the Deployment tab in Replit and configure the deployment start command — this is separate from the .replit run command.
Critically, ensure your server binds to 0.0.0.0 instead of localhost. Replit's deployment infrastructure cannot reach servers bound to localhost. Also add any required Secrets to the deployment environment — they are not copied from the workspace automatically. For Python projects, use run = "python main.py" and ensure the web server framework (Flask, FastAPI) binds to host='0.0.0.0'. If your deployment keeps failing despite correct configuration, RapidDev can help troubleshoot Replit deployment issues or migrate to a more predictable hosting platform.
# .replit file — missing or empty run commandentrypoint = "index.js"# Server listening on localhost (won't work in deployment)app.listen(3000, 'localhost');# .replit file — with correct run commandrun = "node index.js"entrypoint = "index.js"[deployment]run = ["sh", "-c", "node index.js"]# Server listening on 0.0.0.0 (works in deployment)app.listen(3000, '0.0.0.0');Prevention tips
- Always configure the deployment start command separately from the development run command in Replit's Deployment tab
- Bind your server to 0.0.0.0 instead of localhost — Replit deployments cannot reach localhost-bound servers
- Add all required Secrets to the deployment environment separately — they are not inherited from the workspace
- Ensure your app's homepage responds within 5 seconds — Replit's deployment health check will timeout and mark the deployment as failed otherwise
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
My Replit deployment shows 'Deployment failed: missing start command'. I have a Node.js Express app. How do I configure the .replit file and deployment settings correctly?
Set up my .replit file and deployment configuration for a Node.js Express app that listens on port 3000 with the correct run command and 0.0.0.0 binding.
Frequently asked questions
Why does Replit show "Deployment failed: missing start command" even though my Run button works?
Replit's development Run button and deployment use separate configurations. The Run button reads from the .replit file's 'run' field, but deployment may need a separate start command configured in the Deployment tab.
Do I need to listen on 0.0.0.0 for Replit deployments?
Yes. Replit's deployment infrastructure cannot reach servers bound to 'localhost' or '127.0.0.1'. Your server must listen on '0.0.0.0' to accept connections from Replit's routing layer.
Are workspace Secrets available in Replit deployments?
No. Workspace Secrets are not automatically carried over to deployments. You must add them separately in the Deployment tab's Secrets section.
What is the health check timeout for Replit deployments?
Replit expects your app's homepage to respond within 5 seconds. If the health check times out, the deployment is marked as failed even if the app eventually starts.
How do I set a start command for a Python project in Replit?
Set run = "python main.py" in the .replit file (replace main.py with your entry file). Ensure your web framework binds to host='0.0.0.0' and port 5000 or 8080.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your issue.
Book a free consultation