2 Answers
2

It sounds like you have unsealed or unglazed tile. Although this is not a bad thing, they do tend to stain easily and will absorb water temporarily, change color then return to original color when dry.

I don't know what you have already tried to remove the oil stains. Once oil stains sink into unsealed tile, they can be very difficult to remove. Test a small area in an inconspicuous area with some TSP, bleach and water mixture. You may also try some grout cleaner from the building supply store. If the stains are not deep, maybe some Dawn detergent may be enough.

The longer term solution to your problem is to seal the tile. There are several products at the flooring department of building supply stores. These products are similar to grout sealers but better adapted to whole floor sealing. Expect to pay $50 to $75 to seal the average 12X12 foot floor. Follow the directions carefully and use two coats if recommended by the manufacturer. After sealing, ongoing floor cleaning instructions are included on the bottle of sealer. Avoid harsh or abrasive cleaners, often just plain water will do a good job on a sealed tile floor. Depending on the amount of traffic, you may have to reseal every year or two.

I agree with Shirlock's explanation and suggested long term fix but I do have different idea for removing oil stains.

I have similar issues with oil on my (white, porous) granite counter tops. After freaking out the first time it happened I did some searching online and discovered the best approach is to use a “poultice”. The idea is to “pull” the oil out of the stone/ceramic and into the poultice.

I bought a commercial one that you mix with water but this “DIY” remedy actually works better.
Be sure to test in an inconspicuous spot first to make sure this will not make things look worse.

Wipe the area clean with soap and water to remove any dirt and grime. The surface should be clean above the oil spot.

Mix plaster of Paris with acetone in a container. Start with the plaster of Paris in the empty container and slowly add/mix in the acetone until the plaster is dissolved into a goopy paste. You don’t want it too runny but you don’t want dry chunks of plaster either.

Put the mixture on the stain, overlap the stain by at least an inch all around and pile it up a bit. Don’t spread it out to thin I usually have it at least a ¼ inch high.

Cover with plastic wrap and tape down the edges with masking tape.

After 12 or 24 hours remove everything (the plaster of Paris mixture, plastic wrap, and tape). The stain should be lighter or gone completely. If it is lighter but still visible repeat the procedure.