An annual fee for people from outside the European Economic Area is to rise from £200 to £400 for adults and £150 to £300 for under-18s.
The money is paid by people seeking to live in the UK for six months or more to work, study or join family.
The Department of Health and Social Care estimates that NHS treatment for the average person costs £470 per year.
The increased charges will provide an extra £220million every year, with this money going back into NHS.
Health minister James O’Shaughnessy said: “We welcome long-term migrants using the NHS, but it is right that they make a fair contribution to its sustainability.
“By increasing the surcharge to reflect actual costs, this government is providing an extra £220million a year to support the NHS.”
Immigration minister Caroline Nokes said: “It is only right that people who come to the UK should contribute to the running of the NHS.
“The surcharge offers access to health care services that are far more comprehensive and at a much lower cost than many other countries.”
The increases are part of a wider drive to tackle health tourists – people who travel to the UK to benefit from free NHS treatment.
In October the NHS launched measures targeting planned, non-urgent care while A&E, GPs and infectious disease treatments remain free of charge.
Patients are now asked where they have lived in the past six months.
If they have lived abroad they require documents to prove they are entitled to free NHS care.
One health tourist left the NHS with an unpaid bill of £530,000 – one of three cases in 2016/17 in which a foreign patient cost the NHS more than £300,000.
Other large bills include one for £331,000 racked up by a Nigerian woman who flew in pregnant with quadruplets.
She later confessed she had no way of paying the bill, expected to reach £500,000 by the end of her treatment.