If you will Google it a bit there are many complains for this issue: why the colors on my photo uploaded to some website are not so vibrant as on my laptop/desktop?!? The answer is pretty simple: mismatched color profile.
A bit of technical background (let's take jpeg image format and sRGB color space as most used): the ColorProfile is embedded as text (aka metadata) string in you jpeg file. And it will not touch any image pixel data stored in jpeg. In ideal world your hardware and software (say operating system, display, video card, browser, printer etc) should read and obey it to give your image the colors according to embedded metadata. But unfortunately it is not yet so despite ICC standards are available for many years.