EMBARGO: Only to be published or disseminated at 12:00 hour, Thursday, 17 August 2023

MIGRATION SURVEY REPORT, MALAYSIA, 2022

INTRODUCTION

This report presents population migration statistics based on the findings from the Migration Survey of 2022. This survey covers the population aged one year and over. A reference period of one year is used to obtain information related to population movements and flows at the state level. The main indicators presented are population by migration status, internal migration flow, reasons for migration as well as demographic and socioeconomic characteristics of internal migration namely gender, age group, ethnic group, marital status, educational attainment, strata, occupation and industry. Population migration involves urban to/ from urban areas as well as urban to/ from rural areas.


The Migration Survey 2022 was carried out during the third wave of COVID-19. The implementation of the Movement Control Order (MCO) in few phases from January to June 2021 to curb the spread of COVID-19 has affected the trend of population movement in Malaysia. The migration period for one year ago refers to the period from January to December 2021.


MIGRATION STATISTICS

The population aged one year and over who has migrated in 2022 decreased to 158.8 thousand persons (2020: 484.1 thousand persons). The migration rate declined to 0.5 per cent as compared to 1.5 per cent in 2020. 

Intra-state migrants increased to 62.3 per cent in 2022 as compared to 58.4 per cent in 2020. On the other hand, inter-state migrants showed a decrease of 0.9 percentage points from 31.2 per cent in 2020 to 30.3 per cent in 2022.

Meanwhile, international migration from abroad to Malaysia declined to 7.4 per cent in 2022 as compared to 10.4 per cent in 2020.


 Figure 1: Population aged 1 year and over by migration status, Malaysia, 2020 and 2022



INTER-STATE MIGRATION

NET MIGRATION

Net migration is the difference between the number of in-migrants and out-migrants. Negeri Sembilan was the main state receiving migrants which increased to 6.5 thousand persons in 2022 as compared to 1.5 thousand persons in 2020. Meanwhile Selangor recorded as the main migrant sending state in 2022 with 8.8 thousand persons and followed by Johor (6.6 thousand persons).


Chart 1: Net migration by state, Malaysia 2020 and 2022




REASON FOR INTERNAL MIGRATION

In 2022, internal migration due to following family remained as the main reason for migration at 47.3 per cent as compared to 45.3 per cent in 2020. This was followed by environment (19.3%) and career (18.3%).


Figure 2: Internal migrants by reason for migration, Malaysia, 2020 and 2022



Contact person:
Baharudin Mohamad
Public Relation Officer
Strategic Communication and International Division
Department of Statistics Malaysia
Tel : +603-8090 4681
Fax : +603-8888 9248
Email : baharudin[at]dosm.gov.my
Copyright ©2026 Department of Statistics Malaysia Official Portal. All Rights Reserved.
An Error occurred while handling another error:
yii\web\HeadersAlreadySentException: Headers already sent in /var/www/html/dosm/frontend/controllers/SiteController.php on line 191. in /var/www/html/dosm/vendor/yiisoft/yii2/web/Response.php:368
Stack trace:
#0 /var/www/html/dosm/vendor/yiisoft/yii2/web/Response.php(341): yii\web\Response->sendHeaders()
#1 /var/www/html/dosm/vendor/yiisoft/yii2/web/ErrorHandler.php(136): yii\web\Response->send()
#2 /var/www/html/dosm/vendor/yiisoft/yii2/base/ErrorHandler.php(152): yii\web\ErrorHandler->renderException()
#3 [internal function]: yii\base\ErrorHandler->handleException()
#4 {main}
Previous exception:
yii\web\HeadersAlreadySentException: Headers already sent in /var/www/html/dosm/frontend/controllers/SiteController.php on line 191. in /var/www/html/dosm/vendor/yiisoft/yii2/web/Response.php:368
Stack trace:
#0 /var/www/html/dosm/vendor/yiisoft/yii2/web/Response.php(341): yii\web\Response->sendHeaders()
#1 /var/www/html/dosm/vendor/yiisoft/yii2/base/Application.php(390): yii\web\Response->send()
#2 /var/www/html/dosm/www/index.php(24): yii\base\Application->run()
#3 {main}