A common reason for this is that we are viewing these images on an LCD screen, and we have a tendency to crank up the screen brightness. That artificially lightens images seen on them. When those images are moved to a device that doesn't have that backlight, they darken.
The first step for minimizing this is to calibrate your monitor (and then leave it alone; easier said than done). that'll get your monitor close, or at least closer, to what you'll see on other devices.
But after that, what works for me is learning how the monitor is affecting the image and learning to adjust for it. Watching your histogram can help here; the more the luminance of the monitor is tweaking the image, the more an image that "looks right" will have a histogram that slides to the left.
One way to bring this back into sync is to make an image you like, then print it (or upload it) and check it. If it's off, adjust the image and try again. Keep tweaking until the image looks right on whatever device you want it to be viewed on. You now can see how the histogram for the "before" and "after" of the adjustment. Over time you'll be able to make that adjustment on the fly or teach yourself to crank down the brightness of the LCD. I'll regularly do test uploads or test prints just to make sure my processing is working on the output device. You can, over time, make this part of your workflow.
But in quick summary:
calibrate your monitor (and recalibrate it monthly or when the lighting situation changes. When I am on the road, for instance, I calibrate my laptop screen every time I change motel rooms to get in sync with that room's lighting)
use test uploads to compare the screen image to the "real" image (where "real" is whatever oyu're ultimately outputting to). Reduce the brightness on the screen until the difference goes away if you can.
If you can't fully reduce the brightness to match your output device, use a series of before and after tests to figure out what changes you need to make to go from "screen looks good" to "output looks good". Then make those changes on each image before you output. Consider making a preset or action to automate that adjustment.
Learn to read your histogram. It'll help you identify images that are "okay" and which images are in the "looks okay, but will output dark" category. It'll also help you identify what adjustments you need to fix it (what I find is that in most cases, the "okay but will output dark" images are fixed or mostly fixed by adjusting exposure or brightness until the tip of the histogram hits the right edge (effectively setting your white point. that's not a bad habit to get into in your workflow anyway). That presumes an "average" histogram and typical images. For images with strange histograms, you'll have to figure out how to intepret it, but if you know what the typical adjustment is, hitting the image iwth it should get you in the neighborhood.
don't be afraid to test print or test upload. Nobody will laugh at you for doing them. Honest... And they help a lot more than guessing does...
But over time and with practice, you'll get a sense for what an image needs and can "guess" and get it right much of the time....
Generally speaking, it's not you, and it's not a bug. It's that the active lighting of the monitor screen can fool you into thinking the image is brighter than it is.