Carpet will always move in one direction when compressed so when a floor area rug or door mat is placed on top and walked on the pile of the carpet moves sideways usually making the rug move with it.
How to keep a throw rug from slipping on carpet.
To stop rugs slipping on carpets follow these key steps.
Unroll and leave out to stretch in the room you wish to place it.
Stick double sided carpet tape to the underside of the rug.
If you already have a rug attach your own slip proof material to the back.
Apply the tape around the perimeter of the rug about 2 inches from the edge and then palace a few strips along the center for extra security.
The tape will stick to both the carpet and rug to prevent slipping.
Sticky tape will hold the rug but it will also collect dirt dust and debris eventually losing its adhesive qualities.
Stretch out your carpet.
Alternatively try rug anchors or pins.
Placing a nonslip pad under your area rug will help keep it in place and minimize the stretching that occurs when an area rug is on top of carpet.
Silicone caulking or hot glue.
This will help in getting rid of creases so that the maximum surface area sticks.
Measure the length and width of your area rug.
Leave the protective paper on the exposed side of the tape until you re ready to position the rug on the carpet and remove it carefully.
If you re buying opt for a rug with an anti slip backing.
Roll out half of your carpet leaving the back of the carpet exposed.
The taller the pile the more chance of this movement to occur but if the pile is very dense then the sideways movement can be reduced.
If you search online for how to keep rugs from sliding you may find recommendations for using silicone caulking or hot glue on the bottom of rugs.